﻿2026-06-21T03:56:28.3323659Z ##[group]Run ./traceable-reqs check --json
2026-06-21T03:56:28.3323954Z [36;1m./traceable-reqs check --json[0m
2026-06-21T03:56:28.3336734Z shell: /usr/bin/bash -e {0}
2026-06-21T03:56:28.3336947Z ##[endgroup]
2026-06-21T03:56:28.4210567Z {
2026-06-21T03:56:28.4210997Z   "schemaVersion": 1,
2026-06-21T03:56:28.4211345Z   "summary": {
2026-06-21T03:56:28.4211692Z     "requirementCount": 275,
2026-06-21T03:56:28.4212083Z     "completeCount": 275,
2026-06-21T03:56:28.4212431Z     "incompleteCount": 0,
2026-06-21T03:56:28.4212776Z     "findingCount": 0
2026-06-21T03:56:28.4213091Z   },
2026-06-21T03:56:28.4213367Z   "requirements": [
2026-06-21T03:56:28.4213678Z     {
2026-06-21T03:56:28.4213978Z       "id": "REQ-API-1",
2026-06-21T03:56:28.4214460Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T03:56:28.4215022Z       "requiredStages": [
2026-06-21T03:56:28.4215421Z         "impl",
2026-06-21T03:56:28.4215712Z         "unit",
2026-06-21T03:56:28.4215998Z         "int"
2026-06-21T03:56:28.4216337Z       ],
2026-06-21T03:56:28.4216623Z       "stages": {
2026-06-21T03:56:28.4216914Z         "doc": {
2026-06-21T03:56:28.4217171Z           "complete": false,
2026-06-21T03:56:28.4217467Z           "evidence": []
2026-06-21T03:56:28.4217747Z         },
2026-06-21T03:56:28.4217984Z         "impl": {
2026-06-21T03:56:28.4218245Z           "complete": true,
2026-06-21T03:56:28.4218517Z           "evidence": [
2026-06-21T03:56:28.4218776Z             {
2026-06-21T03:56:28.4219161Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4219504Z               "line": 15
2026-06-21T03:56:28.4219772Z             }
2026-06-21T03:56:28.4220001Z           ]
2026-06-21T03:56:28.4220221Z         },
2026-06-21T03:56:28.4220443Z         "int": {
2026-06-21T03:56:28.4220689Z           "complete": true,
2026-06-21T03:56:28.4220975Z           "evidence": [
2026-06-21T03:56:28.4221238Z             {
2026-06-21T03:56:28.4221529Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4221901Z               "line": 13
2026-06-21T03:56:28.4222163Z             }
2026-06-21T03:56:28.4222401Z           ]
2026-06-21T03:56:28.4222619Z         },
2026-06-21T03:56:28.4222845Z         "unit": {
2026-06-21T03:56:28.4223100Z           "complete": true,
2026-06-21T03:56:28.4223378Z           "evidence": [
2026-06-21T03:56:28.4223646Z             {
2026-06-21T03:56:28.4223913Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4224256Z               "line": 717
2026-06-21T03:56:28.4224533Z             },
2026-06-21T03:56:28.4224759Z             {
2026-06-21T03:56:28.4225025Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4225369Z               "line": 804
2026-06-21T03:56:28.4225631Z             }
2026-06-21T03:56:28.4225877Z           ]
2026-06-21T03:56:28.4226121Z         }
2026-06-21T03:56:28.4226335Z       }
2026-06-21T03:56:28.4226572Z     },
2026-06-21T03:56:28.4226788Z     {
2026-06-21T03:56:28.4227021Z       "id": "REQ-API-2",
2026-06-21T03:56:28.4227479Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T03:56:28.4227980Z       "requiredStages": [
2026-06-21T03:56:28.4228246Z         "impl",
2026-06-21T03:56:28.4228486Z         "unit",
2026-06-21T03:56:28.4228725Z         "int"
2026-06-21T03:56:28.4229021Z       ],
2026-06-21T03:56:28.4229255Z       "stages": {
2026-06-21T03:56:28.4229483Z         "doc": {
2026-06-21T03:56:28.4229749Z           "complete": false,
2026-06-21T03:56:28.4230027Z           "evidence": []
2026-06-21T03:56:28.4230294Z         },
2026-06-21T03:56:28.4230528Z         "impl": {
2026-06-21T03:56:28.4230786Z           "complete": true,
2026-06-21T03:56:28.4231079Z           "evidence": [
2026-06-21T03:56:28.4231324Z             {
2026-06-21T03:56:28.4231602Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.4232451Z               "line": 17
2026-06-21T03:56:28.4232699Z             },
2026-06-21T03:56:28.4232931Z             {
2026-06-21T03:56:28.4233429Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.4233788Z               "line": 20
2026-06-21T03:56:28.4234035Z             },
2026-06-21T03:56:28.4234263Z             {
2026-06-21T03:56:28.4234549Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.4234893Z               "line": 142
2026-06-21T03:56:28.4235145Z             },
2026-06-21T03:56:28.4235379Z             {
2026-06-21T03:56:28.4235657Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4236019Z               "line": 24
2026-06-21T03:56:28.4236282Z             },
2026-06-21T03:56:28.4236518Z             {
2026-06-21T03:56:28.4236799Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4237142Z               "line": 41
2026-06-21T03:56:28.4237395Z             },
2026-06-21T03:56:28.4237634Z             {
2026-06-21T03:56:28.4237925Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4238311Z               "line": 213
2026-06-21T03:56:28.4238569Z             },
2026-06-21T03:56:28.4238729Z             {
2026-06-21T03:56:28.4238937Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4239361Z               "line": 255
2026-06-21T03:56:28.4239623Z             },
2026-06-21T03:56:28.4239848Z             {
2026-06-21T03:56:28.4240125Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4240482Z               "line": 334
2026-06-21T03:56:28.4240745Z             },
2026-06-21T03:56:28.4240978Z             {
2026-06-21T03:56:28.4241259Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4241615Z               "line": 397
2026-06-21T03:56:28.4241875Z             },
2026-06-21T03:56:28.4242110Z             {
2026-06-21T03:56:28.4242392Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4242763Z               "line": 436
2026-06-21T03:56:28.4243026Z             },
2026-06-21T03:56:28.4243259Z             {
2026-06-21T03:56:28.4243545Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4243894Z               "line": 17
2026-06-21T03:56:28.4244163Z             },
2026-06-21T03:56:28.4244409Z             {
2026-06-21T03:56:28.4244620Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4244862Z               "line": 30
2026-06-21T03:56:28.4245039Z             },
2026-06-21T03:56:28.4245196Z             {
2026-06-21T03:56:28.4245382Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4245606Z               "line": 63
2026-06-21T03:56:28.4245782Z             },
2026-06-21T03:56:28.4245940Z             {
2026-06-21T03:56:28.4246131Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4246388Z               "line": 77
2026-06-21T03:56:28.4246574Z             }
2026-06-21T03:56:28.4246741Z           ]
2026-06-21T03:56:28.4246922Z         },
2026-06-21T03:56:28.4247088Z         "int": {
2026-06-21T03:56:28.4247274Z           "complete": true,
2026-06-21T03:56:28.4247480Z           "evidence": [
2026-06-21T03:56:28.4247660Z             {
2026-06-21T03:56:28.4247856Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4248100Z               "line": 14
2026-06-21T03:56:28.4248298Z             },
2026-06-21T03:56:28.4248466Z             {
2026-06-21T03:56:28.4248656Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4248895Z               "line": 187
2026-06-21T03:56:28.4249152Z             }
2026-06-21T03:56:28.4249318Z           ]
2026-06-21T03:56:28.4249474Z         },
2026-06-21T03:56:28.4249635Z         "unit": {
2026-06-21T03:56:28.4249808Z           "complete": true,
2026-06-21T03:56:28.4250008Z           "evidence": [
2026-06-21T03:56:28.4250179Z             {
2026-06-21T03:56:28.4250361Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.4250756Z               "line": 82
2026-06-21T03:56:28.4250947Z             },
2026-06-21T03:56:28.4251104Z             {
2026-06-21T03:56:28.4251423Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.4251663Z               "line": 279
2026-06-21T03:56:28.4251843Z             },
2026-06-21T03:56:28.4252006Z             {
2026-06-21T03:56:28.4252195Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4252431Z               "line": 709
2026-06-21T03:56:28.4252608Z             },
2026-06-21T03:56:28.4252760Z             {
2026-06-21T03:56:28.4252947Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4253175Z               "line": 720
2026-06-21T03:56:28.4253347Z             },
2026-06-21T03:56:28.4253504Z             {
2026-06-21T03:56:28.4253699Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4253938Z               "line": 873
2026-06-21T03:56:28.4254110Z             },
2026-06-21T03:56:28.4254272Z             {
2026-06-21T03:56:28.4254473Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4254714Z               "line": 919
2026-06-21T03:56:28.4254899Z             },
2026-06-21T03:56:28.4255078Z             {
2026-06-21T03:56:28.4255275Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4255504Z               "line": 143
2026-06-21T03:56:28.4255679Z             },
2026-06-21T03:56:28.4255842Z             {
2026-06-21T03:56:28.4256028Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4256248Z               "line": 187
2026-06-21T03:56:28.4256434Z             }
2026-06-21T03:56:28.4256600Z           ]
2026-06-21T03:56:28.4256753Z         }
2026-06-21T03:56:28.4256915Z       }
2026-06-21T03:56:28.4257068Z     },
2026-06-21T03:56:28.4257220Z     {
2026-06-21T03:56:28.4257388Z       "id": "REQ-API-3",
2026-06-21T03:56:28.4257633Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T03:56:28.4257895Z       "requiredStages": [
2026-06-21T03:56:28.4258087Z         "impl",
2026-06-21T03:56:28.4258258Z         "unit",
2026-06-21T03:56:28.4258416Z         "int"
2026-06-21T03:56:28.4258582Z       ],
2026-06-21T03:56:28.4258745Z       "stages": {
2026-06-21T03:56:28.4259036Z         "doc": {
2026-06-21T03:56:28.4259294Z           "complete": false,
2026-06-21T03:56:28.4259614Z           "evidence": []
2026-06-21T03:56:28.4259878Z         },
2026-06-21T03:56:28.4260100Z         "impl": {
2026-06-21T03:56:28.4260349Z           "complete": true,
2026-06-21T03:56:28.4260644Z           "evidence": [
2026-06-21T03:56:28.4260902Z             {
2026-06-21T03:56:28.4261169Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.4261536Z               "line": 27
2026-06-21T03:56:28.4285495Z             },
2026-06-21T03:56:28.4285718Z             {
2026-06-21T03:56:28.4285942Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4286220Z               "line": 566
2026-06-21T03:56:28.4286432Z             }
2026-06-21T03:56:28.4286640Z           ]
2026-06-21T03:56:28.4286797Z         },
2026-06-21T03:56:28.4286964Z         "int": {
2026-06-21T03:56:28.4287160Z           "complete": true,
2026-06-21T03:56:28.4287350Z           "evidence": [
2026-06-21T03:56:28.4287532Z             {
2026-06-21T03:56:28.4287732Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4287980Z               "line": 261
2026-06-21T03:56:28.4288156Z             }
2026-06-21T03:56:28.4288318Z           ]
2026-06-21T03:56:28.4288471Z         },
2026-06-21T03:56:28.4288624Z         "unit": {
2026-06-21T03:56:28.4288805Z           "complete": true,
2026-06-21T03:56:28.4289092Z           "evidence": [
2026-06-21T03:56:28.4289266Z             {
2026-06-21T03:56:28.4289458Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.4289696Z               "line": 280
2026-06-21T03:56:28.4289867Z             },
2026-06-21T03:56:28.4290030Z             {
2026-06-21T03:56:28.4290215Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4290664Z               "line": 948
2026-06-21T03:56:28.4290850Z             }
2026-06-21T03:56:28.4291145Z           ]
2026-06-21T03:56:28.4291299Z         }
2026-06-21T03:56:28.4291449Z       }
2026-06-21T03:56:28.4291607Z     },
2026-06-21T03:56:28.4291757Z     {
2026-06-21T03:56:28.4291919Z       "id": "REQ-API-4",
2026-06-21T03:56:28.4293650Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T03:56:28.4295019Z       "requiredStages": [
2026-06-21T03:56:28.4295215Z         "doc",
2026-06-21T03:56:28.4295401Z         "impl",
2026-06-21T03:56:28.4295579Z         "unit"
2026-06-21T03:56:28.4295740Z       ],
2026-06-21T03:56:28.4295921Z       "stages": {
2026-06-21T03:56:28.4296094Z         "doc": {
2026-06-21T03:56:28.4296264Z           "complete": true,
2026-06-21T03:56:28.4296466Z           "evidence": [
2026-06-21T03:56:28.4296636Z             {
2026-06-21T03:56:28.4296813Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4297031Z               "line": 149
2026-06-21T03:56:28.4297224Z             }
2026-06-21T03:56:28.4297372Z           ]
2026-06-21T03:56:28.4297529Z         },
2026-06-21T03:56:28.4297682Z         "impl": {
2026-06-21T03:56:28.4297853Z           "complete": true,
2026-06-21T03:56:28.4298045Z           "evidence": [
2026-06-21T03:56:28.4298215Z             {
2026-06-21T03:56:28.4298393Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4298617Z               "line": 484
2026-06-21T03:56:28.4298789Z             }
2026-06-21T03:56:28.4302804Z           ]
2026-06-21T03:56:28.4303065Z         },
2026-06-21T03:56:28.4303285Z         "int": {
2026-06-21T03:56:28.4303533Z           "complete": false,
2026-06-21T03:56:28.4303820Z           "evidence": []
2026-06-21T03:56:28.4304078Z         },
2026-06-21T03:56:28.4304296Z         "unit": {
2026-06-21T03:56:28.4304534Z           "complete": true,
2026-06-21T03:56:28.4304793Z           "evidence": [
2026-06-21T03:56:28.4305044Z             {
2026-06-21T03:56:28.4305293Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4321963Z               "line": 657
2026-06-21T03:56:28.4322224Z             },
2026-06-21T03:56:28.4322392Z             {
2026-06-21T03:56:28.4322577Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4322830Z               "line": 681
2026-06-21T03:56:28.4323017Z             },
2026-06-21T03:56:28.4323177Z             {
2026-06-21T03:56:28.4323358Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4323590Z               "line": 705
2026-06-21T03:56:28.4323785Z             }
2026-06-21T03:56:28.4323948Z           ]
2026-06-21T03:56:28.4324100Z         }
2026-06-21T03:56:28.4324368Z       }
2026-06-21T03:56:28.4324534Z     },
2026-06-21T03:56:28.4324696Z     {
2026-06-21T03:56:28.4324868Z       "id": "REQ-ARCH-1",
2026-06-21T03:56:28.4325101Z       "title": "Many small acyclically-layered crates",
2026-06-21T03:56:28.4325359Z       "requiredStages": [
2026-06-21T03:56:28.4325542Z         "impl"
2026-06-21T03:56:28.4325702Z       ],
2026-06-21T03:56:28.4325861Z       "stages": {
2026-06-21T03:56:28.4326021Z         "doc": {
2026-06-21T03:56:28.4326193Z           "complete": false,
2026-06-21T03:56:28.4326389Z           "evidence": []
2026-06-21T03:56:28.4326572Z         },
2026-06-21T03:56:28.4326728Z         "impl": {
2026-06-21T03:56:28.4326901Z           "complete": true,
2026-06-21T03:56:28.4327091Z           "evidence": [
2026-06-21T03:56:28.4327268Z             {
2026-06-21T03:56:28.4327455Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T03:56:28.4327840Z               "line": 18
2026-06-21T03:56:28.4328021Z             },
2026-06-21T03:56:28.4328293Z             {
2026-06-21T03:56:28.4328489Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T03:56:28.4328716Z               "line": 12
2026-06-21T03:56:28.4328900Z             },
2026-06-21T03:56:28.4329182Z             {
2026-06-21T03:56:28.4329372Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T03:56:28.4329595Z               "line": 12
2026-06-21T03:56:28.4329763Z             }
2026-06-21T03:56:28.4329924Z           ]
2026-06-21T03:56:28.4330088Z         },
2026-06-21T03:56:28.4330244Z         "int": {
2026-06-21T03:56:28.4330421Z           "complete": false,
2026-06-21T03:56:28.4330607Z           "evidence": []
2026-06-21T03:56:28.4330778Z         },
2026-06-21T03:56:28.4330937Z         "unit": {
2026-06-21T03:56:28.4331111Z           "complete": false,
2026-06-21T03:56:28.4331294Z           "evidence": []
2026-06-21T03:56:28.4331469Z         }
2026-06-21T03:56:28.4331631Z       }
2026-06-21T03:56:28.4331783Z     },
2026-06-21T03:56:28.4331927Z     {
2026-06-21T03:56:28.4332089Z       "id": "REQ-ARCH-2",
2026-06-21T03:56:28.4332351Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T03:56:28.4332642Z       "requiredStages": [
2026-06-21T03:56:28.4332823Z         "impl"
2026-06-21T03:56:28.4332980Z       ],
2026-06-21T03:56:28.4333138Z       "stages": {
2026-06-21T03:56:28.4333300Z         "doc": {
2026-06-21T03:56:28.4333476Z           "complete": false,
2026-06-21T03:56:28.4333666Z           "evidence": []
2026-06-21T03:56:28.4333842Z         },
2026-06-21T03:56:28.4333997Z         "impl": {
2026-06-21T03:56:28.4334164Z           "complete": true,
2026-06-21T03:56:28.4334345Z           "evidence": [
2026-06-21T03:56:28.4334513Z             {
2026-06-21T03:56:28.4334703Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T03:56:28.4334942Z               "line": 18
2026-06-21T03:56:28.4335109Z             }
2026-06-21T03:56:28.4335271Z           ]
2026-06-21T03:56:28.4335419Z         },
2026-06-21T03:56:28.4335576Z         "int": {
2026-06-21T03:56:28.4335743Z           "complete": false,
2026-06-21T03:56:28.4335938Z           "evidence": []
2026-06-21T03:56:28.4336111Z         },
2026-06-21T03:56:28.4336272Z         "unit": {
2026-06-21T03:56:28.4336450Z           "complete": false,
2026-06-21T03:56:28.4336637Z           "evidence": []
2026-06-21T03:56:28.4336813Z         }
2026-06-21T03:56:28.4336954Z       }
2026-06-21T03:56:28.4337099Z     },
2026-06-21T03:56:28.4337251Z     {
2026-06-21T03:56:28.4337413Z       "id": "REQ-ARCH-3",
2026-06-21T03:56:28.4337700Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T03:56:28.4338034Z       "requiredStages": [
2026-06-21T03:56:28.4338228Z         "impl",
2026-06-21T03:56:28.4338396Z         "unit"
2026-06-21T03:56:28.4338552Z       ],
2026-06-21T03:56:28.4338706Z       "stages": {
2026-06-21T03:56:28.4338867Z         "doc": {
2026-06-21T03:56:28.4339120Z           "complete": false,
2026-06-21T03:56:28.4339310Z           "evidence": []
2026-06-21T03:56:28.4339497Z         },
2026-06-21T03:56:28.4339651Z         "impl": {
2026-06-21T03:56:28.4339831Z           "complete": true,
2026-06-21T03:56:28.4340018Z           "evidence": [
2026-06-21T03:56:28.4340184Z             {
2026-06-21T03:56:28.4340385Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:56:28.4340619Z               "line": 34
2026-06-21T03:56:28.4340882Z             },
2026-06-21T03:56:28.4341072Z             {
2026-06-21T03:56:28.4341258Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:56:28.4341497Z               "line": 41
2026-06-21T03:56:28.4357316Z             }
2026-06-21T03:56:28.4357513Z           ]
2026-06-21T03:56:28.4357682Z         },
2026-06-21T03:56:28.4357839Z         "int": {
2026-06-21T03:56:28.4358037Z           "complete": false,
2026-06-21T03:56:28.4358238Z           "evidence": []
2026-06-21T03:56:28.4358591Z         },
2026-06-21T03:56:28.4358762Z         "unit": {
2026-06-21T03:56:28.4359024Z           "complete": true,
2026-06-21T03:56:28.4359348Z           "evidence": [
2026-06-21T03:56:28.4359534Z             {
2026-06-21T03:56:28.4359741Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:56:28.4359997Z               "line": 51
2026-06-21T03:56:28.4360169Z             },
2026-06-21T03:56:28.4360334Z             {
2026-06-21T03:56:28.4360523Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:56:28.4360776Z               "line": 71
2026-06-21T03:56:28.4360942Z             },
2026-06-21T03:56:28.4361100Z             {
2026-06-21T03:56:28.4361295Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T03:56:28.4361548Z               "line": 83
2026-06-21T03:56:28.4361735Z             }
2026-06-21T03:56:28.4361891Z           ]
2026-06-21T03:56:28.4362059Z         }
2026-06-21T03:56:28.4362235Z       }
2026-06-21T03:56:28.4362388Z     },
2026-06-21T03:56:28.4362550Z     {
2026-06-21T03:56:28.4362712Z       "id": "REQ-ARCH-4",
2026-06-21T03:56:28.4362999Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T03:56:28.4363316Z       "requiredStages": [
2026-06-21T03:56:28.4363506Z         "impl",
2026-06-21T03:56:28.4363670Z         "unit"
2026-06-21T03:56:28.4363830Z       ],
2026-06-21T03:56:28.4363998Z       "stages": {
2026-06-21T03:56:28.4364169Z         "doc": {
2026-06-21T03:56:28.4364347Z           "complete": false,
2026-06-21T03:56:28.4364542Z           "evidence": []
2026-06-21T03:56:28.4364723Z         },
2026-06-21T03:56:28.4364886Z         "impl": {
2026-06-21T03:56:28.4365061Z           "complete": true,
2026-06-21T03:56:28.4365300Z           "evidence": [
2026-06-21T03:56:28.4365489Z             {
2026-06-21T03:56:28.4365702Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4365946Z               "line": 165
2026-06-21T03:56:28.4366116Z             },
2026-06-21T03:56:28.4366289Z             {
2026-06-21T03:56:28.4366480Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4366721Z               "line": 188
2026-06-21T03:56:28.4366904Z             },
2026-06-21T03:56:28.4367070Z             {
2026-06-21T03:56:28.4367266Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4367500Z               "line": 208
2026-06-21T03:56:28.4367670Z             },
2026-06-21T03:56:28.4367829Z             {
2026-06-21T03:56:28.4368020Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4368251Z               "line": 223
2026-06-21T03:56:28.4368418Z             },
2026-06-21T03:56:28.4368578Z             {
2026-06-21T03:56:28.4368770Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4369070Z               "line": 273
2026-06-21T03:56:28.4369245Z             }
2026-06-21T03:56:28.4369404Z           ]
2026-06-21T03:56:28.4369565Z         },
2026-06-21T03:56:28.4369714Z         "int": {
2026-06-21T03:56:28.4369913Z           "complete": false,
2026-06-21T03:56:28.4370109Z           "evidence": []
2026-06-21T03:56:28.4370296Z         },
2026-06-21T03:56:28.4370452Z         "unit": {
2026-06-21T03:56:28.4370625Z           "complete": true,
2026-06-21T03:56:28.4370814Z           "evidence": [
2026-06-21T03:56:28.4370990Z             {
2026-06-21T03:56:28.4371173Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4371390Z               "line": 334
2026-06-21T03:56:28.4371569Z             },
2026-06-21T03:56:28.4371732Z             {
2026-06-21T03:56:28.4371923Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4372160Z               "line": 344
2026-06-21T03:56:28.4372337Z             },
2026-06-21T03:56:28.4372490Z             {
2026-06-21T03:56:28.4372666Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4372896Z               "line": 355
2026-06-21T03:56:28.4373071Z             },
2026-06-21T03:56:28.4373226Z             {
2026-06-21T03:56:28.4373526Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4373761Z               "line": 366
2026-06-21T03:56:28.4374038Z             },
2026-06-21T03:56:28.4374192Z             {
2026-06-21T03:56:28.4374382Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4374616Z               "line": 378
2026-06-21T03:56:28.4374787Z             },
2026-06-21T03:56:28.4374954Z             {
2026-06-21T03:56:28.4375146Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4375378Z               "line": 391
2026-06-21T03:56:28.4375555Z             },
2026-06-21T03:56:28.4375722Z             {
2026-06-21T03:56:28.4434303Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4434639Z               "line": 402
2026-06-21T03:56:28.4434839Z             },
2026-06-21T03:56:28.4435007Z             {
2026-06-21T03:56:28.4435211Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4435469Z               "line": 419
2026-06-21T03:56:28.4435698Z             },
2026-06-21T03:56:28.4435860Z             {
2026-06-21T03:56:28.4436056Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.4436299Z               "line": 547
2026-06-21T03:56:28.4436480Z             }
2026-06-21T03:56:28.4436633Z           ]
2026-06-21T03:56:28.4436790Z         }
2026-06-21T03:56:28.4436939Z       }
2026-06-21T03:56:28.4437089Z     },
2026-06-21T03:56:28.4437242Z     {
2026-06-21T03:56:28.4437399Z       "id": "REQ-CLI-1",
2026-06-21T03:56:28.4438563Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T03:56:28.4439794Z       "requiredStages": [
2026-06-21T03:56:28.4439980Z         "impl",
2026-06-21T03:56:28.4440158Z         "unit"
2026-06-21T03:56:28.4440309Z       ],
2026-06-21T03:56:28.4440463Z       "stages": {
2026-06-21T03:56:28.4440628Z         "doc": {
2026-06-21T03:56:28.4440801Z           "complete": false,
2026-06-21T03:56:28.4440991Z           "evidence": []
2026-06-21T03:56:28.4441167Z         },
2026-06-21T03:56:28.4441320Z         "impl": {
2026-06-21T03:56:28.4441501Z           "complete": true,
2026-06-21T03:56:28.4441688Z           "evidence": [
2026-06-21T03:56:28.4441864Z             {
2026-06-21T03:56:28.4442041Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4442277Z               "line": 225
2026-06-21T03:56:28.4442457Z             },
2026-06-21T03:56:28.4442614Z             {
2026-06-21T03:56:28.4442777Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4443001Z               "line": 1093
2026-06-21T03:56:28.4443181Z             },
2026-06-21T03:56:28.4443335Z             {
2026-06-21T03:56:28.4443514Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4443729Z               "line": 1720
2026-06-21T03:56:28.4443902Z             },
2026-06-21T03:56:28.4444058Z             {
2026-06-21T03:56:28.4444236Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4444445Z               "line": 3124
2026-06-21T03:56:28.4444618Z             }
2026-06-21T03:56:28.4444773Z           ]
2026-06-21T03:56:28.4444930Z         },
2026-06-21T03:56:28.4445085Z         "int": {
2026-06-21T03:56:28.4445253Z           "complete": false,
2026-06-21T03:56:28.4445438Z           "evidence": []
2026-06-21T03:56:28.4445605Z         },
2026-06-21T03:56:28.4445757Z         "unit": {
2026-06-21T03:56:28.4445929Z           "complete": true,
2026-06-21T03:56:28.4446105Z           "evidence": [
2026-06-21T03:56:28.4446277Z             {
2026-06-21T03:56:28.4446449Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4446668Z               "line": 7947
2026-06-21T03:56:28.4446855Z             }
2026-06-21T03:56:28.4447312Z           ]
2026-06-21T03:56:28.4447466Z         }
2026-06-21T03:56:28.4447611Z       }
2026-06-21T03:56:28.4447888Z     },
2026-06-21T03:56:28.4448035Z     {
2026-06-21T03:56:28.4448194Z       "id": "REQ-CLI-2",
2026-06-21T03:56:28.4449133Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T03:56:28.4449942Z       "requiredStages": [
2026-06-21T03:56:28.4450126Z         "impl",
2026-06-21T03:56:28.4450283Z         "unit"
2026-06-21T03:56:28.4450427Z       ],
2026-06-21T03:56:28.4450583Z       "stages": {
2026-06-21T03:56:28.4450751Z         "doc": {
2026-06-21T03:56:28.4450917Z           "complete": false,
2026-06-21T03:56:28.4451117Z           "evidence": []
2026-06-21T03:56:28.4451295Z         },
2026-06-21T03:56:28.4451446Z         "impl": {
2026-06-21T03:56:28.4451624Z           "complete": true,
2026-06-21T03:56:28.4451814Z           "evidence": [
2026-06-21T03:56:28.4451995Z             {
2026-06-21T03:56:28.4452196Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4452429Z               "line": 414
2026-06-21T03:56:28.4452611Z             },
2026-06-21T03:56:28.4452756Z             {
2026-06-21T03:56:28.4452956Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:56:28.4453203Z               "line": 97
2026-06-21T03:56:28.4453374Z             },
2026-06-21T03:56:28.4453532Z             {
2026-06-21T03:56:28.4453717Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.4453951Z               "line": 256
2026-06-21T03:56:28.4454118Z             },
2026-06-21T03:56:28.4454266Z             {
2026-06-21T03:56:28.4454442Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4454662Z               "line": 434
2026-06-21T03:56:28.4454829Z             },
2026-06-21T03:56:28.4454991Z             {
2026-06-21T03:56:28.4455173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4455409Z               "line": 1174
2026-06-21T03:56:28.4455579Z             },
2026-06-21T03:56:28.4455736Z             {
2026-06-21T03:56:28.4455913Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4456137Z               "line": 1958
2026-06-21T03:56:28.4456317Z             },
2026-06-21T03:56:28.4456475Z             {
2026-06-21T03:56:28.4456656Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4456871Z               "line": 2047
2026-06-21T03:56:28.4457043Z             },
2026-06-21T03:56:28.4457200Z             {
2026-06-21T03:56:28.4457368Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4457591Z               "line": 2108
2026-06-21T03:56:28.4457763Z             }
2026-06-21T03:56:28.4457920Z           ]
2026-06-21T03:56:28.4458064Z         },
2026-06-21T03:56:28.4458219Z         "int": {
2026-06-21T03:56:28.4458396Z           "complete": false,
2026-06-21T03:56:28.4458586Z           "evidence": []
2026-06-21T03:56:28.4458768Z         },
2026-06-21T03:56:28.4458920Z         "unit": {
2026-06-21T03:56:28.4459177Z           "complete": true,
2026-06-21T03:56:28.4459364Z           "evidence": [
2026-06-21T03:56:28.4459539Z             {
2026-06-21T03:56:28.4459721Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.4459966Z               "line": 338
2026-06-21T03:56:28.4460141Z             },
2026-06-21T03:56:28.4460299Z             {
2026-06-21T03:56:28.4460478Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4460696Z               "line": 8102
2026-06-21T03:56:28.4460867Z             }
2026-06-21T03:56:28.4461019Z           ]
2026-06-21T03:56:28.4461172Z         }
2026-06-21T03:56:28.4461325Z       }
2026-06-21T03:56:28.4461472Z     },
2026-06-21T03:56:28.4461611Z     {
2026-06-21T03:56:28.4461767Z       "id": "REQ-CLI-3",
2026-06-21T03:56:28.4462565Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T03:56:28.4463596Z       "requiredStages": [
2026-06-21T03:56:28.4463782Z         "impl",
2026-06-21T03:56:28.4463944Z         "unit"
2026-06-21T03:56:28.4464102Z       ],
2026-06-21T03:56:28.4464254Z       "stages": {
2026-06-21T03:56:28.4464417Z         "doc": {
2026-06-21T03:56:28.4464583Z           "complete": false,
2026-06-21T03:56:28.4464784Z           "evidence": []
2026-06-21T03:56:28.4464959Z         },
2026-06-21T03:56:28.4465118Z         "impl": {
2026-06-21T03:56:28.4465288Z           "complete": true,
2026-06-21T03:56:28.4465484Z           "evidence": [
2026-06-21T03:56:28.4465652Z             {
2026-06-21T03:56:28.4465822Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4466045Z               "line": 1087
2026-06-21T03:56:28.4466234Z             }
2026-06-21T03:56:28.4466401Z           ]
2026-06-21T03:56:28.4466553Z         },
2026-06-21T03:56:28.4466716Z         "int": {
2026-06-21T03:56:28.4466882Z           "complete": false,
2026-06-21T03:56:28.4467078Z           "evidence": []
2026-06-21T03:56:28.4467255Z         },
2026-06-21T03:56:28.4467411Z         "unit": {
2026-06-21T03:56:28.4467584Z           "complete": true,
2026-06-21T03:56:28.4467770Z           "evidence": [
2026-06-21T03:56:28.4467937Z             {
2026-06-21T03:56:28.4468113Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4468333Z               "line": 7912
2026-06-21T03:56:28.4468509Z             }
2026-06-21T03:56:28.4468779Z           ]
2026-06-21T03:56:28.4469108Z         }
2026-06-21T03:56:28.4469432Z       }
2026-06-21T03:56:28.4469708Z     },
2026-06-21T03:56:28.4469943Z     {
2026-06-21T03:56:28.4470230Z       "id": "REQ-CLI-4",
2026-06-21T03:56:28.4472643Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T03:56:28.4474686Z       "requiredStages": [],
2026-06-21T03:56:28.4475000Z       "stages": {
2026-06-21T03:56:28.4475248Z         "doc": {
2026-06-21T03:56:28.4475563Z           "complete": false,
2026-06-21T03:56:28.4475844Z           "evidence": []
2026-06-21T03:56:28.4476163Z         },
2026-06-21T03:56:28.4476439Z         "impl": {
2026-06-21T03:56:28.4476699Z           "complete": true,
2026-06-21T03:56:28.4477024Z           "evidence": [
2026-06-21T03:56:28.4477281Z             {
2026-06-21T03:56:28.4477534Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4477920Z               "line": 5678
2026-06-21T03:56:28.4478216Z             }
2026-06-21T03:56:28.4478526Z           ]
2026-06-21T03:56:28.4478769Z         },
2026-06-21T03:56:28.4479084Z         "int": {
2026-06-21T03:56:28.4479396Z           "complete": false,
2026-06-21T03:56:28.4479682Z           "evidence": []
2026-06-21T03:56:28.4479973Z         },
2026-06-21T03:56:28.4480218Z         "unit": {
2026-06-21T03:56:28.4480480Z           "complete": false,
2026-06-21T03:56:28.4480822Z           "evidence": []
2026-06-21T03:56:28.4481100Z         }
2026-06-21T03:56:28.4481362Z       }
2026-06-21T03:56:28.4481612Z     },
2026-06-21T03:56:28.4481868Z     {
2026-06-21T03:56:28.4482154Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T03:56:28.4485360Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T03:56:28.4488613Z       "requiredStages": [
2026-06-21T03:56:28.4488900Z         "impl",
2026-06-21T03:56:28.4489702Z         "unit"
2026-06-21T03:56:28.4489956Z       ],
2026-06-21T03:56:28.4490181Z       "stages": {
2026-06-21T03:56:28.4490500Z         "doc": {
2026-06-21T03:56:28.4490783Z           "complete": false,
2026-06-21T03:56:28.4491111Z           "evidence": []
2026-06-21T03:56:28.4491383Z         },
2026-06-21T03:56:28.4491612Z         "impl": {
2026-06-21T03:56:28.4491932Z           "complete": true,
2026-06-21T03:56:28.4492216Z           "evidence": [
2026-06-21T03:56:28.4492508Z             {
2026-06-21T03:56:28.4492800Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4493148Z               "line": 8
2026-06-21T03:56:28.4493463Z             },
2026-06-21T03:56:28.4493701Z             {
2026-06-21T03:56:28.4494002Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4494340Z               "line": 51
2026-06-21T03:56:28.4494621Z             },
2026-06-21T03:56:28.4494912Z             {
2026-06-21T03:56:28.4495183Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4495586Z               "line": 82
2026-06-21T03:56:28.4495868Z             },
2026-06-21T03:56:28.4496121Z             {
2026-06-21T03:56:28.4496426Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4496741Z               "line": 229
2026-06-21T03:56:28.4496993Z             }
2026-06-21T03:56:28.4497274Z           ]
2026-06-21T03:56:28.4497555Z         },
2026-06-21T03:56:28.4497829Z         "int": {
2026-06-21T03:56:28.4498097Z           "complete": false,
2026-06-21T03:56:28.4498368Z           "evidence": []
2026-06-21T03:56:28.4498678Z         },
2026-06-21T03:56:28.4498926Z         "unit": {
2026-06-21T03:56:28.4499299Z           "complete": true,
2026-06-21T03:56:28.4499613Z           "evidence": [
2026-06-21T03:56:28.4499894Z             {
2026-06-21T03:56:28.4500219Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4500526Z               "line": 249
2026-06-21T03:56:28.4500812Z             },
2026-06-21T03:56:28.4501084Z             {
2026-06-21T03:56:28.4501361Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4501723Z               "line": 256
2026-06-21T03:56:28.4501985Z             },
2026-06-21T03:56:28.4502328Z             {
2026-06-21T03:56:28.4502610Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4502918Z               "line": 263
2026-06-21T03:56:28.4503223Z             },
2026-06-21T03:56:28.4503460Z             {
2026-06-21T03:56:28.4503722Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4504086Z               "line": 270
2026-06-21T03:56:28.4504391Z             },
2026-06-21T03:56:28.4504667Z             {
2026-06-21T03:56:28.4504929Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4505239Z               "line": 297
2026-06-21T03:56:28.4505548Z             },
2026-06-21T03:56:28.4505795Z             {
2026-06-21T03:56:28.4506217Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4506542Z               "line": 307
2026-06-21T03:56:28.4506948Z             },
2026-06-21T03:56:28.4507263Z             {
2026-06-21T03:56:28.4507534Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4507868Z               "line": 317
2026-06-21T03:56:28.4508162Z             },
2026-06-21T03:56:28.4508393Z             {
2026-06-21T03:56:28.4508708Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4509109Z               "line": 331
2026-06-21T03:56:28.4509390Z             },
2026-06-21T03:56:28.4509662Z             {
2026-06-21T03:56:28.4509929Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4510291Z               "line": 340
2026-06-21T03:56:28.4510554Z             },
2026-06-21T03:56:28.4510774Z             {
2026-06-21T03:56:28.4511105Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4511445Z               "line": 348
2026-06-21T03:56:28.4511770Z             }
2026-06-21T03:56:28.4512011Z           ]
2026-06-21T03:56:28.4512250Z         }
2026-06-21T03:56:28.4512550Z       }
2026-06-21T03:56:28.4512785Z     },
2026-06-21T03:56:28.4513057Z     {
2026-06-21T03:56:28.4513336Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T03:56:28.4522014Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T03:56:28.4526236Z       "requiredStages": [
2026-06-21T03:56:28.4526556Z         "impl",
2026-06-21T03:56:28.4526830Z         "unit"
2026-06-21T03:56:28.4527119Z       ],
2026-06-21T03:56:28.4527419Z       "stages": {
2026-06-21T03:56:28.4527695Z         "doc": {
2026-06-21T03:56:28.4527981Z           "complete": false,
2026-06-21T03:56:28.4528310Z           "evidence": []
2026-06-21T03:56:28.4528578Z         },
2026-06-21T03:56:28.4528873Z         "impl": {
2026-06-21T03:56:28.4529225Z           "complete": true,
2026-06-21T03:56:28.4529580Z           "evidence": [
2026-06-21T03:56:28.4529876Z             {
2026-06-21T03:56:28.4530163Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4530534Z               "line": 141
2026-06-21T03:56:28.4530806Z             },
2026-06-21T03:56:28.4531040Z             {
2026-06-21T03:56:28.4531360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4531670Z               "line": 1376
2026-06-21T03:56:28.4532022Z             },
2026-06-21T03:56:28.4532260Z             {
2026-06-21T03:56:28.4532507Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4532880Z               "line": 2145
2026-06-21T03:56:28.4533151Z             },
2026-06-21T03:56:28.4533595Z             {
2026-06-21T03:56:28.4533882Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4534328Z               "line": 4368
2026-06-21T03:56:28.4534655Z             },
2026-06-21T03:56:28.4534913Z             {
2026-06-21T03:56:28.4535189Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4535523Z               "line": 4466
2026-06-21T03:56:28.4535804Z             },
2026-06-21T03:56:28.4536076Z             {
2026-06-21T03:56:28.4536357Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4536711Z               "line": 5257
2026-06-21T03:56:28.4537006Z             },
2026-06-21T03:56:28.4537247Z             {
2026-06-21T03:56:28.4537564Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4537893Z               "line": 39
2026-06-21T03:56:28.4538147Z             }
2026-06-21T03:56:28.4538462Z           ]
2026-06-21T03:56:28.4538700Z         },
2026-06-21T03:56:28.4547184Z         "int": {
2026-06-21T03:56:28.4547412Z           "complete": false,
2026-06-21T03:56:28.4547624Z           "evidence": []
2026-06-21T03:56:28.4547817Z         },
2026-06-21T03:56:28.4547997Z         "unit": {
2026-06-21T03:56:28.4548162Z           "complete": true,
2026-06-21T03:56:28.4548354Z           "evidence": [
2026-06-21T03:56:28.4548539Z             {
2026-06-21T03:56:28.4548730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4549045Z               "line": 10272
2026-06-21T03:56:28.4549232Z             },
2026-06-21T03:56:28.4549388Z             {
2026-06-21T03:56:28.4549579Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4549818Z               "line": 281
2026-06-21T03:56:28.4549998Z             },
2026-06-21T03:56:28.4550157Z             {
2026-06-21T03:56:28.4550332Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4550564Z               "line": 358
2026-06-21T03:56:28.4550739Z             },
2026-06-21T03:56:28.4550888Z             {
2026-06-21T03:56:28.4551068Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4551316Z               "line": 381
2026-06-21T03:56:28.4551484Z             },
2026-06-21T03:56:28.4551649Z             {
2026-06-21T03:56:28.4551841Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T03:56:28.4552065Z               "line": 395
2026-06-21T03:56:28.4552246Z             }
2026-06-21T03:56:28.4552404Z           ]
2026-06-21T03:56:28.4552560Z         }
2026-06-21T03:56:28.4552729Z       }
2026-06-21T03:56:28.4552884Z     },
2026-06-21T03:56:28.4553044Z     {
2026-06-21T03:56:28.4553203Z       "id": "REQ-CONSENT-1",
2026-06-21T03:56:28.4554195Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T03:56:28.4555191Z       "requiredStages": [
2026-06-21T03:56:28.4555378Z         "impl",
2026-06-21T03:56:28.4555591Z         "unit"
2026-06-21T03:56:28.4555779Z       ],
2026-06-21T03:56:28.4555937Z       "stages": {
2026-06-21T03:56:28.4556108Z         "doc": {
2026-06-21T03:56:28.4556276Z           "complete": false,
2026-06-21T03:56:28.4556471Z           "evidence": []
2026-06-21T03:56:28.4556657Z         },
2026-06-21T03:56:28.4556809Z         "impl": {
2026-06-21T03:56:28.4556981Z           "complete": true,
2026-06-21T03:56:28.4557182Z           "evidence": [
2026-06-21T03:56:28.4557363Z             {
2026-06-21T03:56:28.4557569Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4557812Z               "line": 27
2026-06-21T03:56:28.4557987Z             },
2026-06-21T03:56:28.4558150Z             {
2026-06-21T03:56:28.4558334Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4558572Z               "line": 75
2026-06-21T03:56:28.4558751Z             },
2026-06-21T03:56:28.4559153Z             {
2026-06-21T03:56:28.4559343Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4559676Z               "line": 98
2026-06-21T03:56:28.4559848Z             },
2026-06-21T03:56:28.4560010Z             {
2026-06-21T03:56:28.4560206Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4560445Z               "line": 82
2026-06-21T03:56:28.4560616Z             },
2026-06-21T03:56:28.4560783Z             {
2026-06-21T03:56:28.4560972Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4561199Z               "line": 109
2026-06-21T03:56:28.4561385Z             },
2026-06-21T03:56:28.4561547Z             {
2026-06-21T03:56:28.4561729Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4561962Z               "line": 127
2026-06-21T03:56:28.4562139Z             },
2026-06-21T03:56:28.4562296Z             {
2026-06-21T03:56:28.4562477Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4562716Z               "line": 142
2026-06-21T03:56:28.4562887Z             },
2026-06-21T03:56:28.4563049Z             {
2026-06-21T03:56:28.4563231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4563464Z               "line": 7048
2026-06-21T03:56:28.4563656Z             }
2026-06-21T03:56:28.4563820Z           ]
2026-06-21T03:56:28.4563979Z         },
2026-06-21T03:56:28.4564135Z         "int": {
2026-06-21T03:56:28.4564308Z           "complete": false,
2026-06-21T03:56:28.4564507Z           "evidence": []
2026-06-21T03:56:28.4564684Z         },
2026-06-21T03:56:28.4564841Z         "unit": {
2026-06-21T03:56:28.4565022Z           "complete": true,
2026-06-21T03:56:28.4565223Z           "evidence": [
2026-06-21T03:56:28.4565408Z             {
2026-06-21T03:56:28.4565610Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4565867Z               "line": 334
2026-06-21T03:56:28.4566056Z             },
2026-06-21T03:56:28.4566223Z             {
2026-06-21T03:56:28.4566416Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4566650Z               "line": 380
2026-06-21T03:56:28.4566836Z             },
2026-06-21T03:56:28.4566992Z             {
2026-06-21T03:56:28.4567184Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4567413Z               "line": 391
2026-06-21T03:56:28.4567580Z             },
2026-06-21T03:56:28.4567732Z             {
2026-06-21T03:56:28.4567919Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4568148Z               "line": 165
2026-06-21T03:56:28.4568323Z             },
2026-06-21T03:56:28.4568481Z             {
2026-06-21T03:56:28.4568672Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4568904Z               "line": 184
2026-06-21T03:56:28.4569183Z             },
2026-06-21T03:56:28.4569336Z             {
2026-06-21T03:56:28.4569517Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T03:56:28.4569741Z               "line": 204
2026-06-21T03:56:28.4569917Z             },
2026-06-21T03:56:28.4570079Z             {
2026-06-21T03:56:28.4570265Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4570494Z               "line": 8334
2026-06-21T03:56:28.4570672Z             }
2026-06-21T03:56:28.4570818Z           ]
2026-06-21T03:56:28.4570982Z         }
2026-06-21T03:56:28.4571142Z       }
2026-06-21T03:56:28.4571297Z     },
2026-06-21T03:56:28.4571457Z     {
2026-06-21T03:56:28.4571623Z       "id": "REQ-CONSENT-2",
2026-06-21T03:56:28.4572537Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T03:56:28.4573471Z       "requiredStages": [
2026-06-21T03:56:28.4573657Z         "impl",
2026-06-21T03:56:28.4573952Z         "unit"
2026-06-21T03:56:28.4574116Z       ],
2026-06-21T03:56:28.4574277Z       "stages": {
2026-06-21T03:56:28.4574529Z         "doc": {
2026-06-21T03:56:28.4574700Z           "complete": false,
2026-06-21T03:56:28.4574882Z           "evidence": []
2026-06-21T03:56:28.4575057Z         },
2026-06-21T03:56:28.4575221Z         "impl": {
2026-06-21T03:56:28.4575387Z           "complete": true,
2026-06-21T03:56:28.4575582Z           "evidence": [
2026-06-21T03:56:28.4575755Z             {
2026-06-21T03:56:28.4575954Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4576193Z               "line": 140
2026-06-21T03:56:28.4576365Z             },
2026-06-21T03:56:28.4576526Z             {
2026-06-21T03:56:28.4576711Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4576943Z               "line": 165
2026-06-21T03:56:28.4577106Z             },
2026-06-21T03:56:28.4577257Z             {
2026-06-21T03:56:28.4577444Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4577692Z               "line": 199
2026-06-21T03:56:28.4577868Z             },
2026-06-21T03:56:28.4578040Z             {
2026-06-21T03:56:28.4578234Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4578474Z               "line": 241
2026-06-21T03:56:28.4578655Z             },
2026-06-21T03:56:28.4578812Z             {
2026-06-21T03:56:28.4579079Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4579314Z               "line": 269
2026-06-21T03:56:28.4579493Z             },
2026-06-21T03:56:28.4579650Z             {
2026-06-21T03:56:28.4579829Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4580068Z               "line": 300
2026-06-21T03:56:28.4580278Z             },
2026-06-21T03:56:28.4580424Z             {
2026-06-21T03:56:28.4580602Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4580830Z               "line": 6839
2026-06-21T03:56:28.4581011Z             },
2026-06-21T03:56:28.4581184Z             {
2026-06-21T03:56:28.4581359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4581599Z               "line": 6897
2026-06-21T03:56:28.4581784Z             }
2026-06-21T03:56:28.4581951Z           ]
2026-06-21T03:56:28.4582111Z         },
2026-06-21T03:56:28.4582263Z         "int": {
2026-06-21T03:56:28.4582448Z           "complete": false,
2026-06-21T03:56:28.4582643Z           "evidence": []
2026-06-21T03:56:28.4582821Z         },
2026-06-21T03:56:28.4582977Z         "unit": {
2026-06-21T03:56:28.4583145Z           "complete": true,
2026-06-21T03:56:28.4583335Z           "evidence": [
2026-06-21T03:56:28.4583512Z             {
2026-06-21T03:56:28.4583707Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4583959Z               "line": 419
2026-06-21T03:56:28.4584137Z             },
2026-06-21T03:56:28.4584303Z             {
2026-06-21T03:56:28.4584489Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4584729Z               "line": 436
2026-06-21T03:56:28.4584908Z             },
2026-06-21T03:56:28.4585070Z             {
2026-06-21T03:56:28.4585260Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4585485Z               "line": 472
2026-06-21T03:56:28.4585681Z             },
2026-06-21T03:56:28.4585833Z             {
2026-06-21T03:56:28.4586029Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.4586124Z               "line": 516
2026-06-21T03:56:28.4586204Z             },
2026-06-21T03:56:28.4586291Z             {
2026-06-21T03:56:28.4586391Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4586476Z               "line": 9614
2026-06-21T03:56:28.4586566Z             },
2026-06-21T03:56:28.4586645Z             {
2026-06-21T03:56:28.4586748Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4586834Z               "line": 9696
2026-06-21T03:56:28.4586915Z             }
2026-06-21T03:56:28.4586997Z           ]
2026-06-21T03:56:28.4587190Z         }
2026-06-21T03:56:28.4587276Z       }
2026-06-21T03:56:28.4587357Z     },
2026-06-21T03:56:28.4587517Z     {
2026-06-21T03:56:28.4587608Z       "id": "REQ-CONSENT-3",
2026-06-21T03:56:28.4589568Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T03:56:28.4589672Z       "requiredStages": [
2026-06-21T03:56:28.4589748Z         "doc",
2026-06-21T03:56:28.4589831Z         "impl",
2026-06-21T03:56:28.4589917Z         "unit",
2026-06-21T03:56:28.4590001Z         "int"
2026-06-21T03:56:28.4590076Z       ],
2026-06-21T03:56:28.4590167Z       "stages": {
2026-06-21T03:56:28.4590257Z         "doc": {
2026-06-21T03:56:28.4590346Z           "complete": true,
2026-06-21T03:56:28.4590436Z           "evidence": [
2026-06-21T03:56:28.4590503Z             {
2026-06-21T03:56:28.4590605Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4590698Z               "line": 304
2026-06-21T03:56:28.4590775Z             }
2026-06-21T03:56:28.4590853Z           ]
2026-06-21T03:56:28.4590934Z         },
2026-06-21T03:56:28.4591008Z         "impl": {
2026-06-21T03:56:28.4591090Z           "complete": true,
2026-06-21T03:56:28.4591186Z           "evidence": [
2026-06-21T03:56:28.4591267Z             {
2026-06-21T03:56:28.4591390Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.4591491Z               "line": 123
2026-06-21T03:56:28.4591571Z             },
2026-06-21T03:56:28.4591652Z             {
2026-06-21T03:56:28.4591778Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.4591867Z               "line": 162
2026-06-21T03:56:28.4591953Z             },
2026-06-21T03:56:28.4592034Z             {
2026-06-21T03:56:28.4592150Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.4592229Z               "line": 291
2026-06-21T03:56:28.4592306Z             },
2026-06-21T03:56:28.4592374Z             {
2026-06-21T03:56:28.4592493Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4592572Z               "line": 574
2026-06-21T03:56:28.4592657Z             },
2026-06-21T03:56:28.4592743Z             {
2026-06-21T03:56:28.4592856Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4592941Z               "line": 824
2026-06-21T03:56:28.4593023Z             },
2026-06-21T03:56:28.4593104Z             {
2026-06-21T03:56:28.4593208Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4593303Z               "line": 6965
2026-06-21T03:56:28.4593386Z             }
2026-06-21T03:56:28.4593466Z           ]
2026-06-21T03:56:28.4593561Z         },
2026-06-21T03:56:28.4593637Z         "int": {
2026-06-21T03:56:28.4593739Z           "complete": true,
2026-06-21T03:56:28.4593820Z           "evidence": [
2026-06-21T03:56:28.4593904Z             {
2026-06-21T03:56:28.4594030Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T03:56:28.4594114Z               "line": 16
2026-06-21T03:56:28.4594195Z             }
2026-06-21T03:56:28.4594276Z           ]
2026-06-21T03:56:28.4594359Z         },
2026-06-21T03:56:28.4594438Z         "unit": {
2026-06-21T03:56:28.4594524Z           "complete": true,
2026-06-21T03:56:28.4594611Z           "evidence": [
2026-06-21T03:56:28.4594693Z             {
2026-06-21T03:56:28.4594815Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.4594892Z               "line": 1019
2026-06-21T03:56:28.4594979Z             },
2026-06-21T03:56:28.4595168Z             {
2026-06-21T03:56:28.4595274Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.4595453Z               "line": 1066
2026-06-21T03:56:28.4595534Z             },
2026-06-21T03:56:28.4595635Z             {
2026-06-21T03:56:28.4595740Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4595830Z               "line": 1394
2026-06-21T03:56:28.4595911Z             }
2026-06-21T03:56:28.4595983Z           ]
2026-06-21T03:56:28.4596073Z         }
2026-06-21T03:56:28.4596159Z       }
2026-06-21T03:56:28.4596246Z     },
2026-06-21T03:56:28.4596326Z     {
2026-06-21T03:56:28.4596430Z       "id": "REQ-CONV-1",
2026-06-21T03:56:28.4597798Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T03:56:28.4597908Z       "requiredStages": [
2026-06-21T03:56:28.4597992Z         "impl",
2026-06-21T03:56:28.4598081Z         "unit"
2026-06-21T03:56:28.4598163Z       ],
2026-06-21T03:56:28.4598245Z       "stages": {
2026-06-21T03:56:28.4598330Z         "doc": {
2026-06-21T03:56:28.4598430Z           "complete": false,
2026-06-21T03:56:28.4598512Z           "evidence": []
2026-06-21T03:56:28.4598593Z         },
2026-06-21T03:56:28.4598678Z         "impl": {
2026-06-21T03:56:28.4598764Z           "complete": true,
2026-06-21T03:56:28.4598855Z           "evidence": [
2026-06-21T03:56:28.4598936Z             {
2026-06-21T03:56:28.4599128Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4599217Z               "line": 938
2026-06-21T03:56:28.4599303Z             },
2026-06-21T03:56:28.4599389Z             {
2026-06-21T03:56:28.4599513Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.4599613Z               "line": 94
2026-06-21T03:56:28.4599688Z             },
2026-06-21T03:56:28.4599767Z             {
2026-06-21T03:56:28.4599870Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.4599966Z               "line": 345
2026-06-21T03:56:28.4600042Z             },
2026-06-21T03:56:28.4600119Z             {
2026-06-21T03:56:28.4600237Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.4600323Z               "line": 387
2026-06-21T03:56:28.4600406Z             },
2026-06-21T03:56:28.4600477Z             {
2026-06-21T03:56:28.4600589Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.4600675Z               "line": 472
2026-06-21T03:56:28.4600756Z             },
2026-06-21T03:56:28.4600840Z             {
2026-06-21T03:56:28.4600953Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4601054Z               "line": 667
2026-06-21T03:56:28.4601140Z             },
2026-06-21T03:56:28.4601221Z             {
2026-06-21T03:56:28.4601350Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4601422Z               "line": 693
2026-06-21T03:56:28.4601508Z             },
2026-06-21T03:56:28.4601578Z             {
2026-06-21T03:56:28.4601689Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.4601770Z               "line": 369
2026-06-21T03:56:28.4601855Z             },
2026-06-21T03:56:28.4601936Z             {
2026-06-21T03:56:28.4602047Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:56:28.4602136Z               "line": 19
2026-06-21T03:56:28.4602208Z             }
2026-06-21T03:56:28.4602294Z           ]
2026-06-21T03:56:28.4602371Z         },
2026-06-21T03:56:28.4602451Z         "int": {
2026-06-21T03:56:28.4602551Z           "complete": false,
2026-06-21T03:56:28.4602643Z           "evidence": []
2026-06-21T03:56:28.4602833Z         },
2026-06-21T03:56:28.4602914Z         "unit": {
2026-06-21T03:56:28.4603001Z           "complete": true,
2026-06-21T03:56:28.4603189Z           "evidence": [
2026-06-21T03:56:28.4603275Z             {
2026-06-21T03:56:28.4603393Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4603468Z               "line": 1263
2026-06-21T03:56:28.4603553Z             },
2026-06-21T03:56:28.4603635Z             {
2026-06-21T03:56:28.4603755Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:56:28.4603840Z               "line": 108
2026-06-21T03:56:28.4603922Z             },
2026-06-21T03:56:28.4604003Z             {
2026-06-21T03:56:28.4604111Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:56:28.4604197Z               "line": 134
2026-06-21T03:56:28.4604270Z             },
2026-06-21T03:56:28.4604350Z             {
2026-06-21T03:56:28.4604455Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T03:56:28.4604547Z               "line": 144
2026-06-21T03:56:28.4604628Z             }
2026-06-21T03:56:28.4604698Z           ]
2026-06-21T03:56:28.4604784Z         }
2026-06-21T03:56:28.4604856Z       }
2026-06-21T03:56:28.4604938Z     },
2026-06-21T03:56:28.4605018Z     {
2026-06-21T03:56:28.4605108Z       "id": "REQ-CONV-2",
2026-06-21T03:56:28.4606181Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T03:56:28.4606263Z       "requiredStages": [
2026-06-21T03:56:28.4606342Z         "impl",
2026-06-21T03:56:28.4606433Z         "unit"
2026-06-21T03:56:28.4606510Z       ],
2026-06-21T03:56:28.4606601Z       "stages": {
2026-06-21T03:56:28.4606681Z         "doc": {
2026-06-21T03:56:28.4606786Z           "complete": false,
2026-06-21T03:56:28.4606867Z           "evidence": []
2026-06-21T03:56:28.4606953Z         },
2026-06-21T03:56:28.4607043Z         "impl": {
2026-06-21T03:56:28.4607130Z           "complete": true,
2026-06-21T03:56:28.4607220Z           "evidence": [
2026-06-21T03:56:28.4607296Z             {
2026-06-21T03:56:28.4607421Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4607502Z               "line": 409
2026-06-21T03:56:28.4607587Z             },
2026-06-21T03:56:28.4607668Z             {
2026-06-21T03:56:28.4607793Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.4607887Z               "line": 119
2026-06-21T03:56:28.4607968Z             },
2026-06-21T03:56:28.4608055Z             {
2026-06-21T03:56:28.4608179Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.4608273Z               "line": 841
2026-06-21T03:56:28.4608363Z             },
2026-06-21T03:56:28.4608440Z             {
2026-06-21T03:56:28.4608561Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.4608646Z               "line": 852
2026-06-21T03:56:28.4608733Z             },
2026-06-21T03:56:28.4608815Z             {
2026-06-21T03:56:28.4608928Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.4609101Z               "line": 334
2026-06-21T03:56:28.4609172Z             },
2026-06-21T03:56:28.4609252Z             {
2026-06-21T03:56:28.4609353Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4609448Z               "line": 3074
2026-06-21T03:56:28.4609529Z             },
2026-06-21T03:56:28.4609609Z             {
2026-06-21T03:56:28.4609707Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4609792Z               "line": 3090
2026-06-21T03:56:28.4609872Z             },
2026-06-21T03:56:28.4609944Z             {
2026-06-21T03:56:28.4610035Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4610116Z               "line": 3170
2026-06-21T03:56:28.4610307Z             }
2026-06-21T03:56:28.4610383Z           ]
2026-06-21T03:56:28.4610545Z         },
2026-06-21T03:56:28.4610627Z         "int": {
2026-06-21T03:56:28.4610722Z           "complete": false,
2026-06-21T03:56:28.4610802Z           "evidence": []
2026-06-21T03:56:28.4610878Z         },
2026-06-21T03:56:28.4610956Z         "unit": {
2026-06-21T03:56:28.4611046Z           "complete": true,
2026-06-21T03:56:28.4611126Z           "evidence": [
2026-06-21T03:56:28.4611211Z             {
2026-06-21T03:56:28.4611325Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4611414Z               "line": 889
2026-06-21T03:56:28.4611495Z             },
2026-06-21T03:56:28.4611576Z             {
2026-06-21T03:56:28.4611687Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4611767Z               "line": 1014
2026-06-21T03:56:28.4611842Z             },
2026-06-21T03:56:28.4611925Z             {
2026-06-21T03:56:28.4612054Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.4612134Z               "line": 215
2026-06-21T03:56:28.4612225Z             }
2026-06-21T03:56:28.4612302Z           ]
2026-06-21T03:56:28.4612373Z         }
2026-06-21T03:56:28.4612458Z       }
2026-06-21T03:56:28.4612534Z     },
2026-06-21T03:56:28.4612616Z     {
2026-06-21T03:56:28.4612696Z       "id": "REQ-DAEMON-1",
2026-06-21T03:56:28.4612864Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T03:56:28.4612960Z       "requiredStages": [
2026-06-21T03:56:28.4613035Z         "impl",
2026-06-21T03:56:28.4613116Z         "unit",
2026-06-21T03:56:28.4613189Z         "int"
2026-06-21T03:56:28.4613275Z       ],
2026-06-21T03:56:28.4613363Z       "stages": {
2026-06-21T03:56:28.4613440Z         "doc": {
2026-06-21T03:56:28.4613532Z           "complete": false,
2026-06-21T03:56:28.4613618Z           "evidence": []
2026-06-21T03:56:28.4613706Z         },
2026-06-21T03:56:28.4613783Z         "impl": {
2026-06-21T03:56:28.4613887Z           "complete": true,
2026-06-21T03:56:28.4613972Z           "evidence": [
2026-06-21T03:56:28.4614061Z             {
2026-06-21T03:56:28.4614172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4614248Z               "line": 229
2026-06-21T03:56:28.4614338Z             },
2026-06-21T03:56:28.4614419Z             {
2026-06-21T03:56:28.4614544Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4614625Z               "line": 12
2026-06-21T03:56:28.4614705Z             },
2026-06-21T03:56:28.4614787Z             {
2026-06-21T03:56:28.4614906Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4614996Z               "line": 16
2026-06-21T03:56:28.4615073Z             },
2026-06-21T03:56:28.4615221Z             {
2026-06-21T03:56:28.4615531Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4623290Z               "line": 309
2026-06-21T03:56:28.4623419Z             },
2026-06-21T03:56:28.4623505Z             {
2026-06-21T03:56:28.4623638Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4623729Z               "line": 24
2026-06-21T03:56:28.4623811Z             },
2026-06-21T03:56:28.4623919Z             {
2026-06-21T03:56:28.4624049Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4624135Z               "line": 262
2026-06-21T03:56:28.4624215Z             },
2026-06-21T03:56:28.4624295Z             {
2026-06-21T03:56:28.4624405Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4624490Z               "line": 279
2026-06-21T03:56:28.4624565Z             },
2026-06-21T03:56:28.4624640Z             {
2026-06-21T03:56:28.4624746Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4624838Z               "line": 356
2026-06-21T03:56:28.4624922Z             },
2026-06-21T03:56:28.4625003Z             {
2026-06-21T03:56:28.4625109Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4625332Z               "line": 670
2026-06-21T03:56:28.4625419Z             },
2026-06-21T03:56:28.4625589Z             {
2026-06-21T03:56:28.4625705Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:56:28.4625786Z               "line": 15
2026-06-21T03:56:28.4625862Z             },
2026-06-21T03:56:28.4625948Z             {
2026-06-21T03:56:28.4626049Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.4626133Z               "line": 241
2026-06-21T03:56:28.4626214Z             },
2026-06-21T03:56:28.4626296Z             {
2026-06-21T03:56:28.4626401Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T03:56:28.4626481Z               "line": 13
2026-06-21T03:56:28.4626567Z             },
2026-06-21T03:56:28.4626645Z             {
2026-06-21T03:56:28.4626749Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4626835Z               "line": 382
2026-06-21T03:56:28.4626926Z             },
2026-06-21T03:56:28.4626998Z             {
2026-06-21T03:56:28.4627110Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4627200Z               "line": 494
2026-06-21T03:56:28.4627282Z             }
2026-06-21T03:56:28.4627363Z           ]
2026-06-21T03:56:28.4627439Z         },
2026-06-21T03:56:28.4627520Z         "int": {
2026-06-21T03:56:28.4627602Z           "complete": true,
2026-06-21T03:56:28.4627687Z           "evidence": [
2026-06-21T03:56:28.4627768Z             {
2026-06-21T03:56:28.4627931Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T03:56:28.4628011Z               "line": 2
2026-06-21T03:56:28.4628093Z             },
2026-06-21T03:56:28.4628168Z             {
2026-06-21T03:56:28.4628322Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T03:56:28.4628403Z               "line": 16
2026-06-21T03:56:28.4628488Z             },
2026-06-21T03:56:28.4628565Z             {
2026-06-21T03:56:28.4628702Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T03:56:28.4628793Z               "line": 12
2026-06-21T03:56:28.4628889Z             },
2026-06-21T03:56:28.4629040Z             {
2026-06-21T03:56:28.4629165Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T03:56:28.4629252Z               "line": 12
2026-06-21T03:56:28.4629327Z             },
2026-06-21T03:56:28.4629412Z             {
2026-06-21T03:56:28.4629536Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:56:28.4629616Z               "line": 44
2026-06-21T03:56:28.4629696Z             }
2026-06-21T03:56:28.4629785Z           ]
2026-06-21T03:56:28.4629868Z         },
2026-06-21T03:56:28.4629945Z         "unit": {
2026-06-21T03:56:28.4630039Z           "complete": true,
2026-06-21T03:56:28.4630120Z           "evidence": [
2026-06-21T03:56:28.4630192Z             {
2026-06-21T03:56:28.4630307Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4630392Z               "line": 285
2026-06-21T03:56:28.4630469Z             },
2026-06-21T03:56:28.4630545Z             {
2026-06-21T03:56:28.4630654Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4630740Z               "line": 293
2026-06-21T03:56:28.4630817Z             },
2026-06-21T03:56:28.4630902Z             {
2026-06-21T03:56:28.4631011Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4631098Z               "line": 309
2026-06-21T03:56:28.4631170Z             },
2026-06-21T03:56:28.4631250Z             {
2026-06-21T03:56:28.4631355Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4631447Z               "line": 317
2026-06-21T03:56:28.4631527Z             },
2026-06-21T03:56:28.4631603Z             {
2026-06-21T03:56:28.4631723Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4631805Z               "line": 659
2026-06-21T03:56:28.4631888Z             },
2026-06-21T03:56:28.4632057Z             {
2026-06-21T03:56:28.4632166Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4632370Z               "line": 729
2026-06-21T03:56:28.4632441Z             },
2026-06-21T03:56:28.4632525Z             {
2026-06-21T03:56:28.4632643Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4632730Z               "line": 1211
2026-06-21T03:56:28.4632807Z             },
2026-06-21T03:56:28.4632887Z             {
2026-06-21T03:56:28.4633006Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4633083Z               "line": 1248
2026-06-21T03:56:28.4633155Z             },
2026-06-21T03:56:28.4633225Z             {
2026-06-21T03:56:28.4633340Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4633426Z               "line": 1271
2026-06-21T03:56:28.4633512Z             },
2026-06-21T03:56:28.4633593Z             {
2026-06-21T03:56:28.4633704Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4633798Z               "line": 1300
2026-06-21T03:56:28.4633874Z             },
2026-06-21T03:56:28.4633960Z             {
2026-06-21T03:56:28.4634065Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4634155Z               "line": 1348
2026-06-21T03:56:28.4634232Z             },
2026-06-21T03:56:28.4634309Z             {
2026-06-21T03:56:28.4634418Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4634494Z               "line": 1391
2026-06-21T03:56:28.4634575Z             },
2026-06-21T03:56:28.4634653Z             {
2026-06-21T03:56:28.4634766Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:56:28.4634846Z               "line": 106
2026-06-21T03:56:28.4634927Z             },
2026-06-21T03:56:28.4635008Z             {
2026-06-21T03:56:28.4635111Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T03:56:28.4635200Z               "line": 132
2026-06-21T03:56:28.4635282Z             },
2026-06-21T03:56:28.4635355Z             {
2026-06-21T03:56:28.4635464Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.4635549Z               "line": 530
2026-06-21T03:56:28.4635631Z             }
2026-06-21T03:56:28.4635707Z           ]
2026-06-21T03:56:28.4635792Z         }
2026-06-21T03:56:28.4635878Z       }
2026-06-21T03:56:28.4635955Z     },
2026-06-21T03:56:28.4636041Z     {
2026-06-21T03:56:28.4636131Z       "id": "REQ-DAEMON-2",
2026-06-21T03:56:28.4636265Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T03:56:28.4636350Z       "requiredStages": [
2026-06-21T03:56:28.4636431Z         "impl",
2026-06-21T03:56:28.4636512Z         "unit",
2026-06-21T03:56:28.4636594Z         "int"
2026-06-21T03:56:28.4636675Z       ],
2026-06-21T03:56:28.4636760Z       "stages": {
2026-06-21T03:56:28.4636847Z         "doc": {
2026-06-21T03:56:28.4636933Z           "complete": true,
2026-06-21T03:56:28.4637018Z           "evidence": [
2026-06-21T03:56:28.4637099Z             {
2026-06-21T03:56:28.4637215Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T03:56:28.4637299Z               "line": 250
2026-06-21T03:56:28.4637370Z             }
2026-06-21T03:56:28.4637457Z           ]
2026-06-21T03:56:28.4637539Z         },
2026-06-21T03:56:28.4637614Z         "impl": {
2026-06-21T03:56:28.4637703Z           "complete": true,
2026-06-21T03:56:28.4637784Z           "evidence": [
2026-06-21T03:56:28.4637866Z             {
2026-06-21T03:56:28.4637967Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4638051Z               "line": 23
2026-06-21T03:56:28.4638123Z             },
2026-06-21T03:56:28.4638210Z             {
2026-06-21T03:56:28.4638314Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4638404Z               "line": 844
2026-06-21T03:56:28.4638486Z             },
2026-06-21T03:56:28.4638567Z             {
2026-06-21T03:56:28.4638671Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4638829Z               "line": 869
2026-06-21T03:56:28.4638915Z             },
2026-06-21T03:56:28.4639077Z             {
2026-06-21T03:56:28.4639287Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4639387Z               "line": 1105
2026-06-21T03:56:28.4639473Z             },
2026-06-21T03:56:28.4639559Z             {
2026-06-21T03:56:28.4639663Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4639745Z               "line": 32
2026-06-21T03:56:28.4639831Z             },
2026-06-21T03:56:28.4639906Z             {
2026-06-21T03:56:28.4640019Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4640105Z               "line": 1102
2026-06-21T03:56:28.4640191Z             },
2026-06-21T03:56:28.4640265Z             {
2026-06-21T03:56:28.4640380Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4640462Z               "line": 1813
2026-06-21T03:56:28.4640542Z             },
2026-06-21T03:56:28.4640623Z             {
2026-06-21T03:56:28.4640728Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4640819Z               "line": 2100
2026-06-21T03:56:28.4640890Z             },
2026-06-21T03:56:28.4640971Z             {
2026-06-21T03:56:28.4641077Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:56:28.4641157Z               "line": 11
2026-06-21T03:56:28.4641238Z             },
2026-06-21T03:56:28.4641319Z             {
2026-06-21T03:56:28.4641430Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4641511Z               "line": 153
2026-06-21T03:56:28.4641590Z             },
2026-06-21T03:56:28.4641663Z             {
2026-06-21T03:56:28.4641768Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4641863Z               "line": 343
2026-06-21T03:56:28.4641939Z             },
2026-06-21T03:56:28.4642016Z             {
2026-06-21T03:56:28.4642120Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4642215Z               "line": 13
2026-06-21T03:56:28.4642298Z             },
2026-06-21T03:56:28.4642379Z             {
2026-06-21T03:56:28.4642507Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4642578Z               "line": 27
2026-06-21T03:56:28.4642660Z             },
2026-06-21T03:56:28.4642741Z             {
2026-06-21T03:56:28.4642854Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4642935Z               "line": 147
2026-06-21T03:56:28.4643016Z             },
2026-06-21T03:56:28.4643086Z             {
2026-06-21T03:56:28.4643190Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4643276Z               "line": 632
2026-06-21T03:56:28.4643357Z             },
2026-06-21T03:56:28.4643433Z             {
2026-06-21T03:56:28.4643547Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4643630Z               "line": 853
2026-06-21T03:56:28.4643715Z             },
2026-06-21T03:56:28.4643790Z             {
2026-06-21T03:56:28.4643901Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4643987Z               "line": 1000
2026-06-21T03:56:28.4644068Z             },
2026-06-21T03:56:28.4644153Z             {
2026-06-21T03:56:28.4644259Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4644348Z               "line": 1089
2026-06-21T03:56:28.4644429Z             },
2026-06-21T03:56:28.4644505Z             {
2026-06-21T03:56:28.4644626Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4644706Z               "line": 1211
2026-06-21T03:56:28.4644782Z             },
2026-06-21T03:56:28.4644864Z             {
2026-06-21T03:56:28.4644978Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:56:28.4645063Z               "line": 10
2026-06-21T03:56:28.4645140Z             }
2026-06-21T03:56:28.4645227Z           ]
2026-06-21T03:56:28.4645302Z         },
2026-06-21T03:56:28.4645387Z         "int": {
2026-06-21T03:56:28.4645582Z           "complete": true,
2026-06-21T03:56:28.4645671Z           "evidence": [
2026-06-21T03:56:28.4645823Z             {
2026-06-21T03:56:28.4645939Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.4646019Z               "line": 17
2026-06-21T03:56:28.4646099Z             },
2026-06-21T03:56:28.4646177Z             {
2026-06-21T03:56:28.4646301Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.4646376Z               "line": 90
2026-06-21T03:56:28.4646443Z             },
2026-06-21T03:56:28.4646525Z             {
2026-06-21T03:56:28.4646639Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.4646724Z               "line": 110
2026-06-21T03:56:28.4646807Z             },
2026-06-21T03:56:28.4646882Z             {
2026-06-21T03:56:28.4647001Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.4647082Z               "line": 186
2026-06-21T03:56:28.4647178Z             },
2026-06-21T03:56:28.4647263Z             {
2026-06-21T03:56:28.4647377Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.4647460Z               "line": 309
2026-06-21T03:56:28.4647535Z             },
2026-06-21T03:56:28.4647621Z             {
2026-06-21T03:56:28.4647741Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T03:56:28.4647827Z               "line": 128
2026-06-21T03:56:28.4647911Z             },
2026-06-21T03:56:28.4647988Z             {
2026-06-21T03:56:28.4648095Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:56:28.4648179Z               "line": 59
2026-06-21T03:56:28.4648264Z             }
2026-06-21T03:56:28.4648349Z           ]
2026-06-21T03:56:28.4648426Z         },
2026-06-21T03:56:28.4648508Z         "unit": {
2026-06-21T03:56:28.4648602Z           "complete": true,
2026-06-21T03:56:28.4648692Z           "evidence": [
2026-06-21T03:56:28.4648765Z             {
2026-06-21T03:56:28.4648884Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:56:28.4649051Z               "line": 62
2026-06-21T03:56:28.4649142Z             },
2026-06-21T03:56:28.4649217Z             {
2026-06-21T03:56:28.4649322Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:56:28.4649413Z               "line": 76
2026-06-21T03:56:28.4649494Z             },
2026-06-21T03:56:28.4649570Z             {
2026-06-21T03:56:28.4649681Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T03:56:28.4649757Z               "line": 88
2026-06-21T03:56:28.4649842Z             },
2026-06-21T03:56:28.4649922Z             {
2026-06-21T03:56:28.4650033Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.4650114Z               "line": 347
2026-06-21T03:56:28.4650195Z             },
2026-06-21T03:56:28.4650276Z             {
2026-06-21T03:56:28.4650382Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4650462Z               "line": 873
2026-06-21T03:56:28.4650542Z             },
2026-06-21T03:56:28.4650623Z             {
2026-06-21T03:56:28.4650727Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4650816Z               "line": 881
2026-06-21T03:56:28.4650892Z             },
2026-06-21T03:56:28.4650964Z             {
2026-06-21T03:56:28.4651075Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4651150Z               "line": 898
2026-06-21T03:56:28.4651226Z             },
2026-06-21T03:56:28.4651307Z             {
2026-06-21T03:56:28.4651408Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4651497Z               "line": 974
2026-06-21T03:56:28.4651574Z             },
2026-06-21T03:56:28.4651656Z             {
2026-06-21T03:56:28.4651765Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4651850Z               "line": 1282
2026-06-21T03:56:28.4651932Z             },
2026-06-21T03:56:28.4652018Z             {
2026-06-21T03:56:28.4652132Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4652319Z               "line": 1294
2026-06-21T03:56:28.4652480Z             },
2026-06-21T03:56:28.4652558Z             {
2026-06-21T03:56:28.4652676Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:56:28.4652757Z               "line": 110
2026-06-21T03:56:28.4652838Z             },
2026-06-21T03:56:28.4652920Z             {
2026-06-21T03:56:28.4653023Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:56:28.4653109Z               "line": 145
2026-06-21T03:56:28.4653187Z             }
2026-06-21T03:56:28.4653268Z           ]
2026-06-21T03:56:28.4653347Z         }
2026-06-21T03:56:28.4653428Z       }
2026-06-21T03:56:28.4653504Z     },
2026-06-21T03:56:28.4653585Z     {
2026-06-21T03:56:28.4653674Z       "id": "REQ-DAEMON-3",
2026-06-21T03:56:28.4653822Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T03:56:28.4653917Z       "requiredStages": [
2026-06-21T03:56:28.4653998Z         "impl",
2026-06-21T03:56:28.4654083Z         "unit",
2026-06-21T03:56:28.4654160Z         "int"
2026-06-21T03:56:28.4654251Z       ],
2026-06-21T03:56:28.4654336Z       "stages": {
2026-06-21T03:56:28.4654408Z         "doc": {
2026-06-21T03:56:28.4654499Z           "complete": false,
2026-06-21T03:56:28.4654584Z           "evidence": []
2026-06-21T03:56:28.4654660Z         },
2026-06-21T03:56:28.4654742Z         "impl": {
2026-06-21T03:56:28.4654819Z           "complete": true,
2026-06-21T03:56:28.4654913Z           "evidence": [
2026-06-21T03:56:28.4654989Z             {
2026-06-21T03:56:28.4655114Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4655186Z               "line": 14
2026-06-21T03:56:28.4655275Z             },
2026-06-21T03:56:28.4655357Z             {
2026-06-21T03:56:28.4655477Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:56:28.4655557Z               "line": 11
2026-06-21T03:56:28.4655643Z             },
2026-06-21T03:56:28.4655720Z             {
2026-06-21T03:56:28.4655830Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.4655928Z               "line": 305
2026-06-21T03:56:28.4656008Z             },
2026-06-21T03:56:28.4656090Z             {
2026-06-21T03:56:28.4656198Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4656283Z               "line": 1956
2026-06-21T03:56:28.4656369Z             },
2026-06-21T03:56:28.4656436Z             {
2026-06-21T03:56:28.4656541Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4656631Z               "line": 4235
2026-06-21T03:56:28.4656712Z             },
2026-06-21T03:56:28.4656794Z             {
2026-06-21T03:56:28.4656893Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4656969Z               "line": 4256
2026-06-21T03:56:28.4657052Z             }
2026-06-21T03:56:28.4657137Z           ]
2026-06-21T03:56:28.4657218Z         },
2026-06-21T03:56:28.4657298Z         "int": {
2026-06-21T03:56:28.4657395Z           "complete": true,
2026-06-21T03:56:28.4657475Z           "evidence": [
2026-06-21T03:56:28.4657561Z             {
2026-06-21T03:56:28.4657676Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4657771Z               "line": 49
2026-06-21T03:56:28.4657852Z             },
2026-06-21T03:56:28.4657924Z             {
2026-06-21T03:56:28.4658044Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.4658124Z               "line": 487
2026-06-21T03:56:28.4658209Z             }
2026-06-21T03:56:28.4658292Z           ]
2026-06-21T03:56:28.4658373Z         },
2026-06-21T03:56:28.4658457Z         "unit": {
2026-06-21T03:56:28.4658539Z           "complete": true,
2026-06-21T03:56:28.4658630Z           "evidence": [
2026-06-21T03:56:28.4658706Z             {
2026-06-21T03:56:28.4658824Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4658904Z               "line": 1553
2026-06-21T03:56:28.4659063Z             },
2026-06-21T03:56:28.4659272Z             {
2026-06-21T03:56:28.4659377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4659563Z               "line": 10715
2026-06-21T03:56:28.4659640Z             }
2026-06-21T03:56:28.4659721Z           ]
2026-06-21T03:56:28.4659801Z         }
2026-06-21T03:56:28.4659878Z       }
2026-06-21T03:56:28.4659959Z     },
2026-06-21T03:56:28.4660040Z     {
2026-06-21T03:56:28.4660135Z       "id": "REQ-DAEMON-4",
2026-06-21T03:56:28.4660251Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T03:56:28.4660354Z       "requiredStages": [
2026-06-21T03:56:28.4660440Z         "impl",
2026-06-21T03:56:28.4660517Z         "unit",
2026-06-21T03:56:28.4660603Z         "int"
2026-06-21T03:56:28.4660674Z       ],
2026-06-21T03:56:28.4660760Z       "stages": {
2026-06-21T03:56:28.4660841Z         "doc": {
2026-06-21T03:56:28.4660932Z           "complete": false,
2026-06-21T03:56:28.4661017Z           "evidence": []
2026-06-21T03:56:28.4661102Z         },
2026-06-21T03:56:28.4661202Z         "impl": {
2026-06-21T03:56:28.4661287Z           "complete": true,
2026-06-21T03:56:28.4661377Z           "evidence": [
2026-06-21T03:56:28.4661471Z             {
2026-06-21T03:56:28.4661592Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4661672Z               "line": 464
2026-06-21T03:56:28.4661752Z             },
2026-06-21T03:56:28.4661834Z             {
2026-06-21T03:56:28.4661944Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4662039Z               "line": 529
2026-06-21T03:56:28.4662125Z             },
2026-06-21T03:56:28.4662202Z             {
2026-06-21T03:56:28.4662320Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4662405Z               "line": 551
2026-06-21T03:56:28.4662488Z             }
2026-06-21T03:56:28.4662569Z           ]
2026-06-21T03:56:28.4662649Z         },
2026-06-21T03:56:28.4662720Z         "int": {
2026-06-21T03:56:28.4662808Z           "complete": true,
2026-06-21T03:56:28.4662912Z           "evidence": [
2026-06-21T03:56:28.4662993Z             {
2026-06-21T03:56:28.4663123Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T03:56:28.4663212Z               "line": 42
2026-06-21T03:56:28.4663293Z             }
2026-06-21T03:56:28.4663369Z           ]
2026-06-21T03:56:28.4663452Z         },
2026-06-21T03:56:28.4663537Z         "unit": {
2026-06-21T03:56:28.4663617Z           "complete": true,
2026-06-21T03:56:28.4663694Z           "evidence": [
2026-06-21T03:56:28.4663767Z             {
2026-06-21T03:56:28.4663880Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.4663959Z               "line": 428
2026-06-21T03:56:28.4664045Z             },
2026-06-21T03:56:28.4664136Z             {
2026-06-21T03:56:28.4664239Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4664319Z               "line": 957
2026-06-21T03:56:28.4664401Z             },
2026-06-21T03:56:28.4664478Z             {
2026-06-21T03:56:28.4664600Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4664681Z               "line": 1027
2026-06-21T03:56:28.4664778Z             },
2026-06-21T03:56:28.4664859Z             {
2026-06-21T03:56:28.4664968Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4665050Z               "line": 1057
2026-06-21T03:56:28.4665140Z             },
2026-06-21T03:56:28.4665221Z             {
2026-06-21T03:56:28.4665335Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4665422Z               "line": 1090
2026-06-21T03:56:28.4665507Z             }
2026-06-21T03:56:28.4665583Z           ]
2026-06-21T03:56:28.4665650Z         }
2026-06-21T03:56:28.4665737Z       }
2026-06-21T03:56:28.4665816Z     },
2026-06-21T03:56:28.4665897Z     {
2026-06-21T03:56:28.4665990Z       "id": "REQ-DAEMON-5",
2026-06-21T03:56:28.4667326Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T03:56:28.4667573Z       "requiredStages": [
2026-06-21T03:56:28.4667655Z         "impl",
2026-06-21T03:56:28.4667741Z         "unit"
2026-06-21T03:56:28.4667816Z       ],
2026-06-21T03:56:28.4667903Z       "stages": {
2026-06-21T03:56:28.4667984Z         "doc": {
2026-06-21T03:56:28.4668064Z           "complete": false,
2026-06-21T03:56:28.4668145Z           "evidence": []
2026-06-21T03:56:28.4668227Z         },
2026-06-21T03:56:28.4668308Z         "impl": {
2026-06-21T03:56:28.4668394Z           "complete": true,
2026-06-21T03:56:28.4668474Z           "evidence": [
2026-06-21T03:56:28.4668556Z             {
2026-06-21T03:56:28.4668674Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4668774Z               "line": 476
2026-06-21T03:56:28.4668857Z             },
2026-06-21T03:56:28.4669007Z             {
2026-06-21T03:56:28.4669128Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4669210Z               "line": 769
2026-06-21T03:56:28.4669295Z             },
2026-06-21T03:56:28.4669374Z             {
2026-06-21T03:56:28.4669494Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4669570Z               "line": 782
2026-06-21T03:56:28.4669656Z             },
2026-06-21T03:56:28.4669741Z             {
2026-06-21T03:56:28.4669856Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4669942Z               "line": 800
2026-06-21T03:56:28.4670018Z             },
2026-06-21T03:56:28.4670103Z             {
2026-06-21T03:56:28.4670205Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4670295Z               "line": 841
2026-06-21T03:56:28.4670385Z             }
2026-06-21T03:56:28.4670466Z           ]
2026-06-21T03:56:28.4670552Z         },
2026-06-21T03:56:28.4670633Z         "int": {
2026-06-21T03:56:28.4670733Z           "complete": false,
2026-06-21T03:56:28.4670811Z           "evidence": []
2026-06-21T03:56:28.4670891Z         },
2026-06-21T03:56:28.4670972Z         "unit": {
2026-06-21T03:56:28.4671052Z           "complete": true,
2026-06-21T03:56:28.4671145Z           "evidence": [
2026-06-21T03:56:28.4671225Z             {
2026-06-21T03:56:28.4671334Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4671425Z               "line": 1189
2026-06-21T03:56:28.4671502Z             },
2026-06-21T03:56:28.4671586Z             {
2026-06-21T03:56:28.4671691Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4671782Z               "line": 1213
2026-06-21T03:56:28.4671857Z             },
2026-06-21T03:56:28.4671937Z             {
2026-06-21T03:56:28.4672051Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.4672132Z               "line": 1239
2026-06-21T03:56:28.4672209Z             }
2026-06-21T03:56:28.4672294Z           ]
2026-06-21T03:56:28.4672379Z         }
2026-06-21T03:56:28.4672457Z       }
2026-06-21T03:56:28.4672537Z     },
2026-06-21T03:56:28.4672618Z     {
2026-06-21T03:56:28.4672709Z       "id": "REQ-DAEMON-6",
2026-06-21T03:56:28.4674677Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T03:56:28.4674884Z       "requiredStages": [
2026-06-21T03:56:28.4674966Z         "impl",
2026-06-21T03:56:28.4675147Z         "unit"
2026-06-21T03:56:28.4675228Z       ],
2026-06-21T03:56:28.4675310Z       "stages": {
2026-06-21T03:56:28.4675385Z         "doc": {
2026-06-21T03:56:28.4675480Z           "complete": false,
2026-06-21T03:56:28.4675561Z           "evidence": []
2026-06-21T03:56:28.4675643Z         },
2026-06-21T03:56:28.4675724Z         "impl": {
2026-06-21T03:56:28.4675814Z           "complete": true,
2026-06-21T03:56:28.4675905Z           "evidence": [
2026-06-21T03:56:28.4675982Z             {
2026-06-21T03:56:28.4676110Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4676201Z               "line": 495
2026-06-21T03:56:28.4676283Z             },
2026-06-21T03:56:28.4676358Z             {
2026-06-21T03:56:28.4676472Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4676569Z               "line": 526
2026-06-21T03:56:28.4676654Z             },
2026-06-21T03:56:28.4676734Z             {
2026-06-21T03:56:28.4676845Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4676936Z               "line": 55
2026-06-21T03:56:28.4677020Z             },
2026-06-21T03:56:28.4677101Z             {
2026-06-21T03:56:28.4677215Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4677300Z               "line": 70
2026-06-21T03:56:28.4677384Z             },
2026-06-21T03:56:28.4677465Z             {
2026-06-21T03:56:28.4677566Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4677657Z               "line": 2020
2026-06-21T03:56:28.4677737Z             },
2026-06-21T03:56:28.4677823Z             {
2026-06-21T03:56:28.4677919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4678005Z               "line": 2046
2026-06-21T03:56:28.4678090Z             }
2026-06-21T03:56:28.4678172Z           ]
2026-06-21T03:56:28.4678257Z         },
2026-06-21T03:56:28.4678343Z         "int": {
2026-06-21T03:56:28.4678443Z           "complete": false,
2026-06-21T03:56:28.4678525Z           "evidence": []
2026-06-21T03:56:28.4678614Z         },
2026-06-21T03:56:28.4678695Z         "unit": {
2026-06-21T03:56:28.4678777Z           "complete": true,
2026-06-21T03:56:28.4678864Z           "evidence": [
2026-06-21T03:56:28.4679034Z             {
2026-06-21T03:56:28.4679155Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4679239Z               "line": 288
2026-06-21T03:56:28.4679329Z             },
2026-06-21T03:56:28.4679427Z             {
2026-06-21T03:56:28.4679531Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4679621Z               "line": 299
2026-06-21T03:56:28.4679693Z             },
2026-06-21T03:56:28.4679775Z             {
2026-06-21T03:56:28.4679874Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4679958Z               "line": 325
2026-06-21T03:56:28.4680039Z             },
2026-06-21T03:56:28.4680116Z             {
2026-06-21T03:56:28.4680216Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4680311Z               "line": 351
2026-06-21T03:56:28.4680392Z             }
2026-06-21T03:56:28.4680474Z           ]
2026-06-21T03:56:28.4680554Z         }
2026-06-21T03:56:28.4680640Z       }
2026-06-21T03:56:28.4680717Z     },
2026-06-21T03:56:28.4680802Z     {
2026-06-21T03:56:28.4680883Z       "id": "REQ-DAEMON-7",
2026-06-21T03:56:28.4682246Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T03:56:28.4682346Z       "requiredStages": [
2026-06-21T03:56:28.4682525Z         "impl",
2026-06-21T03:56:28.4682611Z         "unit"
2026-06-21T03:56:28.4682787Z       ],
2026-06-21T03:56:28.4682873Z       "stages": {
2026-06-21T03:56:28.4682949Z         "doc": {
2026-06-21T03:56:28.4683041Z           "complete": false,
2026-06-21T03:56:28.4683126Z           "evidence": []
2026-06-21T03:56:28.4683206Z         },
2026-06-21T03:56:28.4683289Z         "impl": {
2026-06-21T03:56:28.4683369Z           "complete": true,
2026-06-21T03:56:28.4683464Z           "evidence": [
2026-06-21T03:56:28.4683540Z             {
2026-06-21T03:56:28.4683656Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4683751Z               "line": 545
2026-06-21T03:56:28.4683831Z             },
2026-06-21T03:56:28.4683918Z             {
2026-06-21T03:56:28.4684037Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.4684127Z               "line": 610
2026-06-21T03:56:28.4684204Z             },
2026-06-21T03:56:28.4684290Z             {
2026-06-21T03:56:28.4684403Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4684494Z               "line": 89
2026-06-21T03:56:28.4684577Z             },
2026-06-21T03:56:28.4684657Z             {
2026-06-21T03:56:28.4684762Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4684853Z               "line": 1957
2026-06-21T03:56:28.4684934Z             }
2026-06-21T03:56:28.4685009Z           ]
2026-06-21T03:56:28.4685089Z         },
2026-06-21T03:56:28.4685170Z         "int": {
2026-06-21T03:56:28.4685256Z           "complete": false,
2026-06-21T03:56:28.4685345Z           "evidence": []
2026-06-21T03:56:28.4685425Z         },
2026-06-21T03:56:28.4685502Z         "unit": {
2026-06-21T03:56:28.4685598Z           "complete": true,
2026-06-21T03:56:28.4685678Z           "evidence": [
2026-06-21T03:56:28.4685763Z             {
2026-06-21T03:56:28.4685874Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4685965Z               "line": 314
2026-06-21T03:56:28.4686064Z             },
2026-06-21T03:56:28.4686146Z             {
2026-06-21T03:56:28.4686261Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4686346Z               "line": 8102
2026-06-21T03:56:28.4686417Z             }
2026-06-21T03:56:28.4686495Z           ]
2026-06-21T03:56:28.4686580Z         }
2026-06-21T03:56:28.4686661Z       }
2026-06-21T03:56:28.4686742Z     },
2026-06-21T03:56:28.4686824Z     {
2026-06-21T03:56:28.4686909Z       "id": "REQ-DAEMON-8",
2026-06-21T03:56:28.4687846Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T03:56:28.4687944Z       "requiredStages": [
2026-06-21T03:56:28.4688025Z         "impl",
2026-06-21T03:56:28.4691582Z         "unit"
2026-06-21T03:56:28.4691711Z       ],
2026-06-21T03:56:28.4691796Z       "stages": {
2026-06-21T03:56:28.4691882Z         "doc": {
2026-06-21T03:56:28.4691988Z           "complete": false,
2026-06-21T03:56:28.4692068Z           "evidence": []
2026-06-21T03:56:28.4692159Z         },
2026-06-21T03:56:28.4692236Z         "impl": {
2026-06-21T03:56:28.4692322Z           "complete": true,
2026-06-21T03:56:28.4692406Z           "evidence": [
2026-06-21T03:56:28.4692478Z             {
2026-06-21T03:56:28.4692613Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4692697Z               "line": 445
2026-06-21T03:56:28.4692778Z             },
2026-06-21T03:56:28.4692859Z             {
2026-06-21T03:56:28.4692977Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4693061Z               "line": 56
2026-06-21T03:56:28.4693137Z             }
2026-06-21T03:56:28.4693214Z           ]
2026-06-21T03:56:28.4693296Z         },
2026-06-21T03:56:28.4693381Z         "int": {
2026-06-21T03:56:28.4693610Z           "complete": false,
2026-06-21T03:56:28.4693700Z           "evidence": []
2026-06-21T03:56:28.4693873Z         },
2026-06-21T03:56:28.4693949Z         "unit": {
2026-06-21T03:56:28.4694029Z           "complete": true,
2026-06-21T03:56:28.4694105Z           "evidence": [
2026-06-21T03:56:28.4694183Z             {
2026-06-21T03:56:28.4694306Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4694391Z               "line": 288
2026-06-21T03:56:28.4694468Z             },
2026-06-21T03:56:28.4694554Z             {
2026-06-21T03:56:28.4694673Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T03:56:28.4694749Z               "line": 325
2026-06-21T03:56:28.4694827Z             }
2026-06-21T03:56:28.4694911Z           ]
2026-06-21T03:56:28.4694978Z         }
2026-06-21T03:56:28.4695050Z       }
2026-06-21T03:56:28.4695132Z     },
2026-06-21T03:56:28.4695207Z     {
2026-06-21T03:56:28.4695297Z       "id": "REQ-DAEMON-9",
2026-06-21T03:56:28.4697704Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T03:56:28.4697816Z       "requiredStages": [
2026-06-21T03:56:28.4697903Z         "impl",
2026-06-21T03:56:28.4697985Z         "unit"
2026-06-21T03:56:28.4698070Z       ],
2026-06-21T03:56:28.4698155Z       "stages": {
2026-06-21T03:56:28.4698235Z         "doc": {
2026-06-21T03:56:28.4698336Z           "complete": false,
2026-06-21T03:56:28.4698420Z           "evidence": []
2026-06-21T03:56:28.4698505Z         },
2026-06-21T03:56:28.4698585Z         "impl": {
2026-06-21T03:56:28.4698676Z           "complete": true,
2026-06-21T03:56:28.4698759Z           "evidence": [
2026-06-21T03:56:28.4698848Z             {
2026-06-21T03:56:28.4699049Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4699130Z               "line": 276
2026-06-21T03:56:28.4699210Z             },
2026-06-21T03:56:28.4699292Z             {
2026-06-21T03:56:28.4699411Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4699496Z               "line": 1153
2026-06-21T03:56:28.4699578Z             },
2026-06-21T03:56:28.4699659Z             {
2026-06-21T03:56:28.4699769Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4699859Z               "line": 197
2026-06-21T03:56:28.4699936Z             },
2026-06-21T03:56:28.4700022Z             {
2026-06-21T03:56:28.4700126Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4700217Z               "line": 344
2026-06-21T03:56:28.4700299Z             },
2026-06-21T03:56:28.4700379Z             {
2026-06-21T03:56:28.4700493Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4700571Z               "line": 381
2026-06-21T03:56:28.4700651Z             },
2026-06-21T03:56:28.4700731Z             {
2026-06-21T03:56:28.4700828Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4700909Z               "line": 2075
2026-06-21T03:56:28.4700980Z             }
2026-06-21T03:56:28.4701069Z           ]
2026-06-21T03:56:28.4701140Z         },
2026-06-21T03:56:28.4701212Z         "int": {
2026-06-21T03:56:28.4701309Z           "complete": false,
2026-06-21T03:56:28.4701388Z           "evidence": []
2026-06-21T03:56:28.4701474Z         },
2026-06-21T03:56:28.4701666Z         "unit": {
2026-06-21T03:56:28.4701755Z           "complete": true,
2026-06-21T03:56:28.4701828Z           "evidence": [
2026-06-21T03:56:28.4702009Z             {
2026-06-21T03:56:28.4702118Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4702205Z               "line": 1158
2026-06-21T03:56:28.4702285Z             },
2026-06-21T03:56:28.4702366Z             {
2026-06-21T03:56:28.4702472Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4702553Z               "line": 10580
2026-06-21T03:56:28.4702628Z             }
2026-06-21T03:56:28.4702714Z           ]
2026-06-21T03:56:28.4702787Z         }
2026-06-21T03:56:28.4702858Z       }
2026-06-21T03:56:28.4702933Z     },
2026-06-21T03:56:28.4703014Z     {
2026-06-21T03:56:28.4703101Z       "id": "REQ-DOCS-1",
2026-06-21T03:56:28.4703290Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T03:56:28.4703371Z       "requiredStages": [
2026-06-21T03:56:28.4703462Z         "doc",
2026-06-21T03:56:28.4703537Z         "impl"
2026-06-21T03:56:28.4703617Z       ],
2026-06-21T03:56:28.4703706Z       "stages": {
2026-06-21T03:56:28.4703789Z         "doc": {
2026-06-21T03:56:28.4703876Z           "complete": true,
2026-06-21T03:56:28.4703955Z           "evidence": [
2026-06-21T03:56:28.4704036Z             {
2026-06-21T03:56:28.4704142Z               "path": "docs-site/src/index.md",
2026-06-21T03:56:28.4704218Z               "line": 50
2026-06-21T03:56:28.4704303Z             }
2026-06-21T03:56:28.4704385Z           ]
2026-06-21T03:56:28.4704461Z         },
2026-06-21T03:56:28.4704547Z         "impl": {
2026-06-21T03:56:28.4704627Z           "complete": true,
2026-06-21T03:56:28.4704714Z           "evidence": [
2026-06-21T03:56:28.4704790Z             {
2026-06-21T03:56:28.4704913Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T03:56:28.4704999Z               "line": 12
2026-06-21T03:56:28.4705077Z             },
2026-06-21T03:56:28.4705161Z             {
2026-06-21T03:56:28.4705271Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.4705358Z               "line": 14
2026-06-21T03:56:28.4705443Z             }
2026-06-21T03:56:28.4705514Z           ]
2026-06-21T03:56:28.4705595Z         },
2026-06-21T03:56:28.4705678Z         "int": {
2026-06-21T03:56:28.4705758Z           "complete": false,
2026-06-21T03:56:28.4705843Z           "evidence": []
2026-06-21T03:56:28.4705920Z         },
2026-06-21T03:56:28.4705992Z         "unit": {
2026-06-21T03:56:28.4706083Z           "complete": false,
2026-06-21T03:56:28.4706167Z           "evidence": []
2026-06-21T03:56:28.4706242Z         }
2026-06-21T03:56:28.4706324Z       }
2026-06-21T03:56:28.4706409Z     },
2026-06-21T03:56:28.4706498Z     {
2026-06-21T03:56:28.4706583Z       "id": "REQ-DOCS-2",
2026-06-21T03:56:28.4706742Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T03:56:28.4706827Z       "requiredStages": [
2026-06-21T03:56:28.4706917Z         "doc",
2026-06-21T03:56:28.4707000Z         "int"
2026-06-21T03:56:28.4707081Z       ],
2026-06-21T03:56:28.4707165Z       "stages": {
2026-06-21T03:56:28.4707247Z         "doc": {
2026-06-21T03:56:28.4707333Z           "complete": true,
2026-06-21T03:56:28.4707410Z           "evidence": [
2026-06-21T03:56:28.4707480Z             {
2026-06-21T03:56:28.4707639Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T03:56:28.4707724Z               "line": 3
2026-06-21T03:56:28.4707805Z             },
2026-06-21T03:56:28.4707876Z             {
2026-06-21T03:56:28.4708001Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T03:56:28.4708086Z               "line": 3
2026-06-21T03:56:28.4708176Z             },
2026-06-21T03:56:28.4708259Z             {
2026-06-21T03:56:28.4708386Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T03:56:28.4708468Z               "line": 3
2026-06-21T03:56:28.4708545Z             }
2026-06-21T03:56:28.4708616Z           ]
2026-06-21T03:56:28.4708771Z         },
2026-06-21T03:56:28.4708852Z         "impl": {
2026-06-21T03:56:28.4709036Z           "complete": false,
2026-06-21T03:56:28.4709203Z           "evidence": []
2026-06-21T03:56:28.4709295Z         },
2026-06-21T03:56:28.4709380Z         "int": {
2026-06-21T03:56:28.4709470Z           "complete": true,
2026-06-21T03:56:28.4709543Z           "evidence": [
2026-06-21T03:56:28.4709642Z             {
2026-06-21T03:56:28.4709775Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:56:28.4709853Z               "line": 14
2026-06-21T03:56:28.4709928Z             }
2026-06-21T03:56:28.4710005Z           ]
2026-06-21T03:56:28.4710075Z         },
2026-06-21T03:56:28.4710153Z         "unit": {
2026-06-21T03:56:28.4710243Z           "complete": false,
2026-06-21T03:56:28.4710329Z           "evidence": []
2026-06-21T03:56:28.4710404Z         }
2026-06-21T03:56:28.4710487Z       }
2026-06-21T03:56:28.4710562Z     },
2026-06-21T03:56:28.4710648Z     {
2026-06-21T03:56:28.4710743Z       "id": "REQ-DOCS-3",
2026-06-21T03:56:28.4710939Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T03:56:28.4711029Z       "requiredStages": [
2026-06-21T03:56:28.4711112Z         "doc"
2026-06-21T03:56:28.4711192Z       ],
2026-06-21T03:56:28.4711272Z       "stages": {
2026-06-21T03:56:28.4711349Z         "doc": {
2026-06-21T03:56:28.4711426Z           "complete": true,
2026-06-21T03:56:28.4711512Z           "evidence": [
2026-06-21T03:56:28.4711591Z             {
2026-06-21T03:56:28.4711696Z               "path": "docs-site/src/index.md",
2026-06-21T03:56:28.4711782Z               "line": 42
2026-06-21T03:56:28.4711854Z             }
2026-06-21T03:56:28.4711935Z           ]
2026-06-21T03:56:28.4712005Z         },
2026-06-21T03:56:28.4712088Z         "impl": {
2026-06-21T03:56:28.4712169Z           "complete": false,
2026-06-21T03:56:28.4712254Z           "evidence": []
2026-06-21T03:56:28.4712334Z         },
2026-06-21T03:56:28.4712412Z         "int": {
2026-06-21T03:56:28.4712507Z           "complete": false,
2026-06-21T03:56:28.4712588Z           "evidence": []
2026-06-21T03:56:28.4712674Z         },
2026-06-21T03:56:28.4712750Z         "unit": {
2026-06-21T03:56:28.4712836Z           "complete": false,
2026-06-21T03:56:28.4712912Z           "evidence": []
2026-06-21T03:56:28.4712993Z         }
2026-06-21T03:56:28.4713075Z       }
2026-06-21T03:56:28.4713151Z     },
2026-06-21T03:56:28.4713232Z     {
2026-06-21T03:56:28.4713317Z       "id": "REQ-DOCS-4",
2026-06-21T03:56:28.4713512Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T03:56:28.4713593Z       "requiredStages": [
2026-06-21T03:56:28.4713676Z         "doc",
2026-06-21T03:56:28.4713766Z         "impl",
2026-06-21T03:56:28.4713841Z         "unit"
2026-06-21T03:56:28.4713922Z       ],
2026-06-21T03:56:28.4714003Z       "stages": {
2026-06-21T03:56:28.4714088Z         "doc": {
2026-06-21T03:56:28.4714181Z           "complete": true,
2026-06-21T03:56:28.4714272Z           "evidence": [
2026-06-21T03:56:28.4714349Z             {
2026-06-21T03:56:28.4714455Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T03:56:28.4714544Z               "line": 35
2026-06-21T03:56:28.4714620Z             }
2026-06-21T03:56:28.4714702Z           ]
2026-06-21T03:56:28.4714788Z         },
2026-06-21T03:56:28.4714858Z         "impl": {
2026-06-21T03:56:28.4714945Z           "complete": true,
2026-06-21T03:56:28.4715027Z           "evidence": [
2026-06-21T03:56:28.4715112Z             {
2026-06-21T03:56:28.4715230Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4715317Z               "line": 746
2026-06-21T03:56:28.4715402Z             },
2026-06-21T03:56:28.4715478Z             {
2026-06-21T03:56:28.4715584Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.4715670Z               "line": 15
2026-06-21T03:56:28.4715756Z             }
2026-06-21T03:56:28.4715836Z           ]
2026-06-21T03:56:28.4715923Z         },
2026-06-21T03:56:28.4716113Z         "int": {
2026-06-21T03:56:28.4716204Z           "complete": false,
2026-06-21T03:56:28.4716389Z           "evidence": []
2026-06-21T03:56:28.4716461Z         },
2026-06-21T03:56:28.4716543Z         "unit": {
2026-06-21T03:56:28.4716620Z           "complete": true,
2026-06-21T03:56:28.4716708Z           "evidence": [
2026-06-21T03:56:28.4716789Z             {
2026-06-21T03:56:28.4716913Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4716993Z               "line": 1682
2026-06-21T03:56:28.4717073Z             }
2026-06-21T03:56:28.4717153Z           ]
2026-06-21T03:56:28.4717235Z         }
2026-06-21T03:56:28.4717317Z       }
2026-06-21T03:56:28.4717387Z     },
2026-06-21T03:56:28.4717463Z     {
2026-06-21T03:56:28.4717555Z       "id": "REQ-DOCS-5",
2026-06-21T03:56:28.4717749Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T03:56:28.4717846Z       "requiredStages": [
2026-06-21T03:56:28.4717917Z         "impl",
2026-06-21T03:56:28.4718002Z         "int"
2026-06-21T03:56:28.4718083Z       ],
2026-06-21T03:56:28.4718160Z       "stages": {
2026-06-21T03:56:28.4718250Z         "doc": {
2026-06-21T03:56:28.4718331Z           "complete": false,
2026-06-21T03:56:28.4718417Z           "evidence": []
2026-06-21T03:56:28.4718495Z         },
2026-06-21T03:56:28.4718579Z         "impl": {
2026-06-21T03:56:28.4718670Z           "complete": true,
2026-06-21T03:56:28.4718751Z           "evidence": [
2026-06-21T03:56:28.4718829Z             {
2026-06-21T03:56:28.4719028Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4719119Z               "line": 747
2026-06-21T03:56:28.4719186Z             },
2026-06-21T03:56:28.4719265Z             {
2026-06-21T03:56:28.4719379Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.4719475Z               "line": 113
2026-06-21T03:56:28.4719550Z             }
2026-06-21T03:56:28.4719630Z           ]
2026-06-21T03:56:28.4719705Z         },
2026-06-21T03:56:28.4719788Z         "int": {
2026-06-21T03:56:28.4719869Z           "complete": true,
2026-06-21T03:56:28.4719968Z           "evidence": [
2026-06-21T03:56:28.4720045Z             {
2026-06-21T03:56:28.4720150Z               "path": ".github/workflows/ci.yml",
2026-06-21T03:56:28.4720236Z               "line": 164
2026-06-21T03:56:28.4720316Z             },
2026-06-21T03:56:28.4720393Z             {
2026-06-21T03:56:28.4720512Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.4720593Z               "line": 1719
2026-06-21T03:56:28.4720664Z             }
2026-06-21T03:56:28.4720751Z           ]
2026-06-21T03:56:28.4720827Z         },
2026-06-21T03:56:28.4720908Z         "unit": {
2026-06-21T03:56:28.4720989Z           "complete": false,
2026-06-21T03:56:28.4721076Z           "evidence": []
2026-06-21T03:56:28.4721146Z         }
2026-06-21T03:56:28.4721223Z       }
2026-06-21T03:56:28.4721303Z     },
2026-06-21T03:56:28.4721381Z     {
2026-06-21T03:56:28.4721480Z       "id": "REQ-DOCS-6",
2026-06-21T03:56:28.4721790Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T03:56:28.4721871Z       "requiredStages": [
2026-06-21T03:56:28.4721958Z         "impl",
2026-06-21T03:56:28.4722034Z         "unit",
2026-06-21T03:56:28.4722119Z         "int"
2026-06-21T03:56:28.4722190Z       ],
2026-06-21T03:56:28.4722270Z       "stages": {
2026-06-21T03:56:28.4722347Z         "doc": {
2026-06-21T03:56:28.4722438Z           "complete": true,
2026-06-21T03:56:28.4722523Z           "evidence": [
2026-06-21T03:56:28.4722599Z             {
2026-06-21T03:56:28.4722729Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T03:56:28.4722809Z               "line": 4
2026-06-21T03:56:28.4722880Z             }
2026-06-21T03:56:28.4722958Z           ]
2026-06-21T03:56:28.4723034Z         },
2026-06-21T03:56:28.4723120Z         "impl": {
2026-06-21T03:56:28.4723204Z           "complete": true,
2026-06-21T03:56:28.4723396Z           "evidence": [
2026-06-21T03:56:28.4723477Z             {
2026-06-21T03:56:28.4723668Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4723748Z               "line": 5240
2026-06-21T03:56:28.4723834Z             }
2026-06-21T03:56:28.4723922Z           ]
2026-06-21T03:56:28.4724002Z         },
2026-06-21T03:56:28.4724082Z         "int": {
2026-06-21T03:56:28.4724168Z           "complete": true,
2026-06-21T03:56:28.4724251Z           "evidence": [
2026-06-21T03:56:28.4724331Z             {
2026-06-21T03:56:28.4724448Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:56:28.4724524Z               "line": 39
2026-06-21T03:56:28.4724601Z             }
2026-06-21T03:56:28.4724686Z           ]
2026-06-21T03:56:28.4724761Z         },
2026-06-21T03:56:28.4724846Z         "unit": {
2026-06-21T03:56:28.4724923Z           "complete": true,
2026-06-21T03:56:28.4725010Z           "evidence": [
2026-06-21T03:56:28.4725094Z             {
2026-06-21T03:56:28.4725195Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4725286Z               "line": 10742
2026-06-21T03:56:28.4725362Z             }
2026-06-21T03:56:28.4725442Z           ]
2026-06-21T03:56:28.4725525Z         }
2026-06-21T03:56:28.4725606Z       }
2026-06-21T03:56:28.4725686Z     },
2026-06-21T03:56:28.4725766Z     {
2026-06-21T03:56:28.4725858Z       "id": "REQ-ELEVATE-1",
2026-06-21T03:56:28.4728925Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T03:56:28.4729126Z       "requiredStages": [
2026-06-21T03:56:28.4729211Z         "doc",
2026-06-21T03:56:28.4729283Z         "impl",
2026-06-21T03:56:28.4729365Z         "unit"
2026-06-21T03:56:28.4729455Z       ],
2026-06-21T03:56:28.4729535Z       "stages": {
2026-06-21T03:56:28.4729617Z         "doc": {
2026-06-21T03:56:28.4729694Z           "complete": true,
2026-06-21T03:56:28.4729779Z           "evidence": [
2026-06-21T03:56:28.4729854Z             {
2026-06-21T03:56:28.4729953Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4730049Z               "line": 687
2026-06-21T03:56:28.4730129Z             }
2026-06-21T03:56:28.4730209Z           ]
2026-06-21T03:56:28.4730295Z         },
2026-06-21T03:56:28.4730376Z         "impl": {
2026-06-21T03:56:28.4730462Z           "complete": true,
2026-06-21T03:56:28.4730547Z           "evidence": [
2026-06-21T03:56:28.4730629Z             {
2026-06-21T03:56:28.4730729Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4730814Z               "line": 3572
2026-06-21T03:56:28.4730886Z             },
2026-06-21T03:56:28.4730963Z             {
2026-06-21T03:56:28.4731063Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4731143Z               "line": 3617
2026-06-21T03:56:28.4731229Z             },
2026-06-21T03:56:28.4731297Z             {
2026-06-21T03:56:28.4731396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4731477Z               "line": 3679
2026-06-21T03:56:28.4731563Z             },
2026-06-21T03:56:28.4731641Z             {
2026-06-21T03:56:28.4731858Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.4731941Z               "line": 92
2026-06-21T03:56:28.4732121Z             },
2026-06-21T03:56:28.4732208Z             {
2026-06-21T03:56:28.4732308Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.4732392Z               "line": 148
2026-06-21T03:56:28.4732469Z             }
2026-06-21T03:56:28.4732546Z           ]
2026-06-21T03:56:28.4732632Z         },
2026-06-21T03:56:28.4732707Z         "int": {
2026-06-21T03:56:28.4732806Z           "complete": false,
2026-06-21T03:56:28.4732888Z           "evidence": []
2026-06-21T03:56:28.4732970Z         },
2026-06-21T03:56:28.4733050Z         "unit": {
2026-06-21T03:56:28.4733130Z           "complete": true,
2026-06-21T03:56:28.4733217Z           "evidence": [
2026-06-21T03:56:28.4733298Z             {
2026-06-21T03:56:28.4733403Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.4733484Z               "line": 442
2026-06-21T03:56:28.4733580Z             },
2026-06-21T03:56:28.4733651Z             {
2026-06-21T03:56:28.4733755Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.4733852Z               "line": 460
2026-06-21T03:56:28.4733932Z             }
2026-06-21T03:56:28.4734013Z           ]
2026-06-21T03:56:28.4734094Z         }
2026-06-21T03:56:28.4734172Z       }
2026-06-21T03:56:28.4734261Z     },
2026-06-21T03:56:28.4734338Z     {
2026-06-21T03:56:28.4734443Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T03:56:28.4736189Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T03:56:28.4736298Z       "requiredStages": [
2026-06-21T03:56:28.4736380Z         "doc",
2026-06-21T03:56:28.4736461Z         "impl",
2026-06-21T03:56:28.4736547Z         "unit"
2026-06-21T03:56:28.4736618Z       ],
2026-06-21T03:56:28.4736704Z       "stages": {
2026-06-21T03:56:28.4736790Z         "doc": {
2026-06-21T03:56:28.4736881Z           "complete": true,
2026-06-21T03:56:28.4736975Z           "evidence": [
2026-06-21T03:56:28.4737053Z             {
2026-06-21T03:56:28.4737152Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4737234Z               "line": 711
2026-06-21T03:56:28.4737319Z             }
2026-06-21T03:56:28.4737401Z           ]
2026-06-21T03:56:28.4737476Z         },
2026-06-21T03:56:28.4737558Z         "impl": {
2026-06-21T03:56:28.4737639Z           "complete": true,
2026-06-21T03:56:28.4737730Z           "evidence": [
2026-06-21T03:56:28.4737810Z             {
2026-06-21T03:56:28.4737914Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4738005Z               "line": 1721
2026-06-21T03:56:28.4738085Z             },
2026-06-21T03:56:28.4738169Z             {
2026-06-21T03:56:28.4738269Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4738350Z               "line": 3125
2026-06-21T03:56:28.4738432Z             },
2026-06-21T03:56:28.4738517Z             {
2026-06-21T03:56:28.4738617Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4738699Z               "line": 3134
2026-06-21T03:56:28.4738780Z             }
2026-06-21T03:56:28.4738855Z           ]
2026-06-21T03:56:28.4738937Z         },
2026-06-21T03:56:28.4739090Z         "int": {
2026-06-21T03:56:28.4739184Z           "complete": false,
2026-06-21T03:56:28.4739271Z           "evidence": []
2026-06-21T03:56:28.4739343Z         },
2026-06-21T03:56:28.4739428Z         "unit": {
2026-06-21T03:56:28.4739620Z           "complete": true,
2026-06-21T03:56:28.4739714Z           "evidence": [
2026-06-21T03:56:28.4739790Z             {
2026-06-21T03:56:28.4739987Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4740076Z               "line": 7950
2026-06-21T03:56:28.4740157Z             },
2026-06-21T03:56:28.4740240Z             {
2026-06-21T03:56:28.4740330Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4740419Z               "line": 7991
2026-06-21T03:56:28.4740485Z             }
2026-06-21T03:56:28.4740576Z           ]
2026-06-21T03:56:28.4740657Z         }
2026-06-21T03:56:28.4740731Z       }
2026-06-21T03:56:28.4740812Z     },
2026-06-21T03:56:28.4740888Z     {
2026-06-21T03:56:28.4740990Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T03:56:28.4745712Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T03:56:28.4745838Z       "requiredStages": [
2026-06-21T03:56:28.4745914Z         "doc",
2026-06-21T03:56:28.4745991Z         "impl",
2026-06-21T03:56:28.4746078Z         "unit",
2026-06-21T03:56:28.4746158Z         "int"
2026-06-21T03:56:28.4746243Z       ],
2026-06-21T03:56:28.4746325Z       "stages": {
2026-06-21T03:56:28.4746416Z         "doc": {
2026-06-21T03:56:28.4746510Z           "complete": true,
2026-06-21T03:56:28.4746596Z           "evidence": [
2026-06-21T03:56:28.4746678Z             {
2026-06-21T03:56:28.4746764Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4746844Z               "line": 163
2026-06-21T03:56:28.4746921Z             }
2026-06-21T03:56:28.4747007Z           ]
2026-06-21T03:56:28.4747088Z         },
2026-06-21T03:56:28.4747168Z         "impl": {
2026-06-21T03:56:28.4747269Z           "complete": true,
2026-06-21T03:56:28.4747355Z           "evidence": [
2026-06-21T03:56:28.4747436Z             {
2026-06-21T03:56:28.4747560Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.4747646Z               "line": 105
2026-06-21T03:56:28.4747731Z             },
2026-06-21T03:56:28.4747803Z             {
2026-06-21T03:56:28.4747909Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4747994Z               "line": 7219
2026-06-21T03:56:28.4748074Z             }
2026-06-21T03:56:28.4748155Z           ]
2026-06-21T03:56:28.4748238Z         },
2026-06-21T03:56:28.4748319Z         "int": {
2026-06-21T03:56:28.4748403Z           "complete": true,
2026-06-21T03:56:28.4748498Z           "evidence": [
2026-06-21T03:56:28.4748579Z             {
2026-06-21T03:56:28.4748682Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4748872Z               "line": 7384
2026-06-21T03:56:28.4749044Z             }
2026-06-21T03:56:28.4749120Z           ]
2026-06-21T03:56:28.4749302Z         },
2026-06-21T03:56:28.4749392Z         "unit": {
2026-06-21T03:56:28.4749473Z           "complete": true,
2026-06-21T03:56:28.4749555Z           "evidence": [
2026-06-21T03:56:28.4749635Z             {
2026-06-21T03:56:28.4749740Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4749816Z               "line": 7355
2026-06-21T03:56:28.4749893Z             }
2026-06-21T03:56:28.4749969Z           ]
2026-06-21T03:56:28.4750050Z         }
2026-06-21T03:56:28.4750126Z       }
2026-06-21T03:56:28.4750208Z     },
2026-06-21T03:56:28.4750288Z     {
2026-06-21T03:56:28.4750398Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T03:56:28.4751667Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T03:56:28.4751778Z       "requiredStages": [
2026-06-21T03:56:28.4751859Z         "impl",
2026-06-21T03:56:28.4751944Z         "unit"
2026-06-21T03:56:28.4752016Z       ],
2026-06-21T03:56:28.4752103Z       "stages": {
2026-06-21T03:56:28.4752188Z         "doc": {
2026-06-21T03:56:28.4752268Z           "complete": false,
2026-06-21T03:56:28.4752359Z           "evidence": []
2026-06-21T03:56:28.4752441Z         },
2026-06-21T03:56:28.4752535Z         "impl": {
2026-06-21T03:56:28.4752626Z           "complete": true,
2026-06-21T03:56:28.4752708Z           "evidence": [
2026-06-21T03:56:28.4752789Z             {
2026-06-21T03:56:28.4752889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4752979Z               "line": 3165
2026-06-21T03:56:28.4753056Z             }
2026-06-21T03:56:28.4753142Z           ]
2026-06-21T03:56:28.4753227Z         },
2026-06-21T03:56:28.4753308Z         "int": {
2026-06-21T03:56:28.4753400Z           "complete": false,
2026-06-21T03:56:28.4753489Z           "evidence": []
2026-06-21T03:56:28.4753570Z         },
2026-06-21T03:56:28.4753653Z         "unit": {
2026-06-21T03:56:28.4753734Z           "complete": true,
2026-06-21T03:56:28.4753818Z           "evidence": [
2026-06-21T03:56:28.4753899Z             {
2026-06-21T03:56:28.4753998Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4754080Z               "line": 7331
2026-06-21T03:56:28.4754165Z             }
2026-06-21T03:56:28.4754246Z           ]
2026-06-21T03:56:28.4754328Z         }
2026-06-21T03:56:28.4754409Z       }
2026-06-21T03:56:28.4754494Z     },
2026-06-21T03:56:28.4754575Z     {
2026-06-21T03:56:28.4754662Z       "id": "REQ-EP-1",
2026-06-21T03:56:28.4754786Z       "title": "Day-one endpoint types; open type system",
2026-06-21T03:56:28.4754871Z       "requiredStages": [
2026-06-21T03:56:28.4754953Z         "impl",
2026-06-21T03:56:28.4755038Z         "unit"
2026-06-21T03:56:28.4755119Z       ],
2026-06-21T03:56:28.4755205Z       "stages": {
2026-06-21T03:56:28.4755292Z         "doc": {
2026-06-21T03:56:28.4755386Z           "complete": false,
2026-06-21T03:56:28.4755472Z           "evidence": []
2026-06-21T03:56:28.4755553Z         },
2026-06-21T03:56:28.4755640Z         "impl": {
2026-06-21T03:56:28.4755720Z           "complete": true,
2026-06-21T03:56:28.4755805Z           "evidence": [
2026-06-21T03:56:28.4755887Z             {
2026-06-21T03:56:28.4756016Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4756101Z               "line": 77
2026-06-21T03:56:28.4756186Z             },
2026-06-21T03:56:28.4756263Z             {
2026-06-21T03:56:28.4756375Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4756465Z               "line": 94
2026-06-21T03:56:28.4756657Z             }
2026-06-21T03:56:28.4756742Z           ]
2026-06-21T03:56:28.4756822Z         },
2026-06-21T03:56:28.4756909Z         "int": {
2026-06-21T03:56:28.4757085Z           "complete": false,
2026-06-21T03:56:28.4757171Z           "evidence": []
2026-06-21T03:56:28.4757252Z         },
2026-06-21T03:56:28.4757329Z         "unit": {
2026-06-21T03:56:28.4757414Z           "complete": true,
2026-06-21T03:56:28.4757491Z           "evidence": [
2026-06-21T03:56:28.4757567Z             {
2026-06-21T03:56:28.4757681Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4757762Z               "line": 161
2026-06-21T03:56:28.4757844Z             },
2026-06-21T03:56:28.4757924Z             {
2026-06-21T03:56:28.4758029Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4758110Z               "line": 178
2026-06-21T03:56:28.4758197Z             }
2026-06-21T03:56:28.4758277Z           ]
2026-06-21T03:56:28.4758349Z         }
2026-06-21T03:56:28.4758430Z       }
2026-06-21T03:56:28.4758517Z     },
2026-06-21T03:56:28.4758601Z     {
2026-06-21T03:56:28.4758687Z       "id": "REQ-EP-2",
2026-06-21T03:56:28.4758855Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T03:56:28.4759029Z       "requiredStages": [
2026-06-21T03:56:28.4759105Z         "impl",
2026-06-21T03:56:28.4759186Z         "unit"
2026-06-21T03:56:28.4759266Z       ],
2026-06-21T03:56:28.4759351Z       "stages": {
2026-06-21T03:56:28.4759442Z         "doc": {
2026-06-21T03:56:28.4759543Z           "complete": false,
2026-06-21T03:56:28.4759628Z           "evidence": []
2026-06-21T03:56:28.4759709Z         },
2026-06-21T03:56:28.4759791Z         "impl": {
2026-06-21T03:56:28.4759867Z           "complete": true,
2026-06-21T03:56:28.4759957Z           "evidence": [
2026-06-21T03:56:28.4760028Z             {
2026-06-21T03:56:28.4760134Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4760220Z               "line": 114
2026-06-21T03:56:28.4760300Z             },
2026-06-21T03:56:28.4760381Z             {
2026-06-21T03:56:28.4760487Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4760577Z               "line": 131
2026-06-21T03:56:28.4760658Z             },
2026-06-21T03:56:28.4760735Z             {
2026-06-21T03:56:28.4760853Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4760930Z               "line": 138
2026-06-21T03:56:28.4761011Z             }
2026-06-21T03:56:28.4761083Z           ]
2026-06-21T03:56:28.4761163Z         },
2026-06-21T03:56:28.4761245Z         "int": {
2026-06-21T03:56:28.4761336Z           "complete": false,
2026-06-21T03:56:28.4761426Z           "evidence": []
2026-06-21T03:56:28.4761511Z         },
2026-06-21T03:56:28.4761587Z         "unit": {
2026-06-21T03:56:28.4761672Z           "complete": true,
2026-06-21T03:56:28.4761758Z           "evidence": [
2026-06-21T03:56:28.4761837Z             {
2026-06-21T03:56:28.4761951Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4762047Z               "line": 190
2026-06-21T03:56:28.4762124Z             },
2026-06-21T03:56:28.4762213Z             {
2026-06-21T03:56:28.4762319Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4762396Z               "line": 208
2026-06-21T03:56:28.4762477Z             },
2026-06-21T03:56:28.4762556Z             {
2026-06-21T03:56:28.4762667Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T03:56:28.4762743Z               "line": 221
2026-06-21T03:56:28.4762824Z             }
2026-06-21T03:56:28.4762905Z           ]
2026-06-21T03:56:28.4762982Z         }
2026-06-21T03:56:28.4765994Z       }
2026-06-21T03:56:28.4766108Z     },
2026-06-21T03:56:28.4766191Z     {
2026-06-21T03:56:28.4766284Z       "id": "REQ-EP-3",
2026-06-21T03:56:28.4766476Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T03:56:28.4766576Z       "requiredStages": [
2026-06-21T03:56:28.4766689Z         "impl",
2026-06-21T03:56:28.4766903Z         "unit"
2026-06-21T03:56:28.4766992Z       ],
2026-06-21T03:56:28.4767077Z       "stages": {
2026-06-21T03:56:28.4767250Z         "doc": {
2026-06-21T03:56:28.4767345Z           "complete": false,
2026-06-21T03:56:28.4767431Z           "evidence": []
2026-06-21T03:56:28.4767503Z         },
2026-06-21T03:56:28.4767583Z         "impl": {
2026-06-21T03:56:28.4767674Z           "complete": true,
2026-06-21T03:56:28.4767755Z           "evidence": [
2026-06-21T03:56:28.4767836Z             {
2026-06-21T03:56:28.4767959Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4768041Z               "line": 31
2026-06-21T03:56:28.4768109Z             },
2026-06-21T03:56:28.4768189Z             {
2026-06-21T03:56:28.4768312Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4768389Z               "line": 49
2026-06-21T03:56:28.4768470Z             }
2026-06-21T03:56:28.4768552Z           ]
2026-06-21T03:56:28.4768632Z         },
2026-06-21T03:56:28.4768719Z         "int": {
2026-06-21T03:56:28.4768804Z           "complete": false,
2026-06-21T03:56:28.4768890Z           "evidence": []
2026-06-21T03:56:28.4769077Z         },
2026-06-21T03:56:28.4769156Z         "unit": {
2026-06-21T03:56:28.4769247Z           "complete": true,
2026-06-21T03:56:28.4769330Z           "evidence": [
2026-06-21T03:56:28.4769420Z             {
2026-06-21T03:56:28.4769533Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4769622Z               "line": 156
2026-06-21T03:56:28.4769704Z             },
2026-06-21T03:56:28.4769779Z             {
2026-06-21T03:56:28.4769883Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4769964Z               "line": 164
2026-06-21T03:56:28.4770045Z             },
2026-06-21T03:56:28.4770122Z             {
2026-06-21T03:56:28.4770231Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4770307Z               "line": 177
2026-06-21T03:56:28.4770384Z             },
2026-06-21T03:56:28.4770470Z             {
2026-06-21T03:56:28.4770569Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4770666Z               "line": 200
2026-06-21T03:56:28.4770746Z             },
2026-06-21T03:56:28.4770817Z             {
2026-06-21T03:56:28.4770918Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4771004Z               "line": 216
2026-06-21T03:56:28.4771085Z             },
2026-06-21T03:56:28.4771161Z             {
2026-06-21T03:56:28.4771271Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T03:56:28.4771357Z               "line": 233
2026-06-21T03:56:28.4771437Z             }
2026-06-21T03:56:28.4771509Z           ]
2026-06-21T03:56:28.4771586Z         }
2026-06-21T03:56:28.4771677Z       }
2026-06-21T03:56:28.4771757Z     },
2026-06-21T03:56:28.4771838Z     {
2026-06-21T03:56:28.4771935Z       "id": "REQ-EP-4",
2026-06-21T03:56:28.4772086Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T03:56:28.4772180Z       "requiredStages": [
2026-06-21T03:56:28.4772262Z         "impl",
2026-06-21T03:56:28.4772351Z         "unit"
2026-06-21T03:56:28.4772417Z       ],
2026-06-21T03:56:28.4772497Z       "stages": {
2026-06-21T03:56:28.4772579Z         "doc": {
2026-06-21T03:56:28.4772670Z           "complete": false,
2026-06-21T03:56:28.4772759Z           "evidence": []
2026-06-21T03:56:28.4772831Z         },
2026-06-21T03:56:28.4772908Z         "impl": {
2026-06-21T03:56:28.4772998Z           "complete": true,
2026-06-21T03:56:28.4773084Z           "evidence": [
2026-06-21T03:56:28.4773165Z             {
2026-06-21T03:56:28.4773270Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4773356Z               "line": 764
2026-06-21T03:56:28.4773436Z             },
2026-06-21T03:56:28.4773519Z             {
2026-06-21T03:56:28.4773628Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4773713Z               "line": 1127
2026-06-21T03:56:28.4773905Z             },
2026-06-21T03:56:28.4773985Z             {
2026-06-21T03:56:28.4774104Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4774276Z               "line": 2117
2026-06-21T03:56:28.4774357Z             },
2026-06-21T03:56:28.4774439Z             {
2026-06-21T03:56:28.4774553Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4774642Z               "line": 118
2026-06-21T03:56:28.4774714Z             },
2026-06-21T03:56:28.4774802Z             {
2026-06-21T03:56:28.4774901Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4774985Z               "line": 699
2026-06-21T03:56:28.4775066Z             },
2026-06-21T03:56:28.4775143Z             {
2026-06-21T03:56:28.4775239Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4775319Z               "line": 836
2026-06-21T03:56:28.4775390Z             },
2026-06-21T03:56:28.4775462Z             {
2026-06-21T03:56:28.4775568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4775652Z               "line": 271
2026-06-21T03:56:28.4775734Z             },
2026-06-21T03:56:28.4775821Z             {
2026-06-21T03:56:28.4775925Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4776000Z               "line": 458
2026-06-21T03:56:28.4776078Z             },
2026-06-21T03:56:28.4776159Z             {
2026-06-21T03:56:28.4776259Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4776349Z               "line": 1246
2026-06-21T03:56:28.4776431Z             }
2026-06-21T03:56:28.4776516Z           ]
2026-06-21T03:56:28.4776597Z         },
2026-06-21T03:56:28.4776673Z         "int": {
2026-06-21T03:56:28.4776765Z           "complete": false,
2026-06-21T03:56:28.4776849Z           "evidence": []
2026-06-21T03:56:28.4776935Z         },
2026-06-21T03:56:28.4777017Z         "unit": {
2026-06-21T03:56:28.4777108Z           "complete": true,
2026-06-21T03:56:28.4777187Z           "evidence": [
2026-06-21T03:56:28.4777269Z             {
2026-06-21T03:56:28.4777373Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.4777463Z               "line": 927
2026-06-21T03:56:28.4777538Z             },
2026-06-21T03:56:28.4777618Z             {
2026-06-21T03:56:28.4777739Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T03:56:28.4777829Z               "line": 76
2026-06-21T03:56:28.4777900Z             },
2026-06-21T03:56:28.4777981Z             {
2026-06-21T03:56:28.4778091Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T03:56:28.4778172Z               "line": 147
2026-06-21T03:56:28.4778253Z             }
2026-06-21T03:56:28.4778335Z           ]
2026-06-21T03:56:28.4778415Z         }
2026-06-21T03:56:28.4778496Z       }
2026-06-21T03:56:28.4778577Z     },
2026-06-21T03:56:28.4778645Z     {
2026-06-21T03:56:28.4778725Z       "id": "REQ-EP-5",
2026-06-21T03:56:28.4779450Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T03:56:28.4779545Z       "requiredStages": [
2026-06-21T03:56:28.4779628Z         "impl",
2026-06-21T03:56:28.4779707Z         "unit",
2026-06-21T03:56:28.4779788Z         "int"
2026-06-21T03:56:28.4779865Z       ],
2026-06-21T03:56:28.4779947Z       "stages": {
2026-06-21T03:56:28.4780027Z         "doc": {
2026-06-21T03:56:28.4780107Z           "complete": false,
2026-06-21T03:56:28.4780197Z           "evidence": []
2026-06-21T03:56:28.4780274Z         },
2026-06-21T03:56:28.4780353Z         "impl": {
2026-06-21T03:56:28.4780443Z           "complete": true,
2026-06-21T03:56:28.4780519Z           "evidence": [
2026-06-21T03:56:28.4780601Z             {
2026-06-21T03:56:28.4780724Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.4780810Z               "line": 367
2026-06-21T03:56:28.4781002Z             },
2026-06-21T03:56:28.4781091Z             {
2026-06-21T03:56:28.4781212Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4781377Z               "line": 18
2026-06-21T03:56:28.4781463Z             },
2026-06-21T03:56:28.4781541Z             {
2026-06-21T03:56:28.4781645Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4781730Z               "line": 63
2026-06-21T03:56:28.4781812Z             },
2026-06-21T03:56:28.4781893Z             {
2026-06-21T03:56:28.4781997Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4782074Z               "line": 92
2026-06-21T03:56:28.4782151Z             },
2026-06-21T03:56:28.4782232Z             {
2026-06-21T03:56:28.4782336Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4782412Z               "line": 167
2026-06-21T03:56:28.4782490Z             },
2026-06-21T03:56:28.4782566Z             {
2026-06-21T03:56:28.4782674Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4782764Z               "line": 179
2026-06-21T03:56:28.4782850Z             },
2026-06-21T03:56:28.4782925Z             {
2026-06-21T03:56:28.4783033Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.4783105Z               "line": 114
2026-06-21T03:56:28.4783187Z             },
2026-06-21T03:56:28.4783272Z             {
2026-06-21T03:56:28.4783381Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4783468Z               "line": 22
2026-06-21T03:56:28.4783544Z             },
2026-06-21T03:56:28.4783625Z             {
2026-06-21T03:56:28.4783735Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4783816Z               "line": 145
2026-06-21T03:56:28.4783897Z             },
2026-06-21T03:56:28.4783968Z             {
2026-06-21T03:56:28.4784084Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4784164Z               "line": 174
2026-06-21T03:56:28.4784245Z             },
2026-06-21T03:56:28.4784325Z             {
2026-06-21T03:56:28.4784432Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4784517Z               "line": 196
2026-06-21T03:56:28.4784593Z             },
2026-06-21T03:56:28.4784674Z             {
2026-06-21T03:56:28.4784780Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4784860Z               "line": 221
2026-06-21T03:56:28.4784931Z             },
2026-06-21T03:56:28.4785004Z             {
2026-06-21T03:56:28.4785118Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4785198Z               "line": 247
2026-06-21T03:56:28.4785284Z             },
2026-06-21T03:56:28.4785357Z             {
2026-06-21T03:56:28.4785470Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4785555Z               "line": 270
2026-06-21T03:56:28.4785626Z             },
2026-06-21T03:56:28.4785698Z             {
2026-06-21T03:56:28.4785813Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4785907Z               "line": 104
2026-06-21T03:56:28.4785994Z             },
2026-06-21T03:56:28.4786071Z             {
2026-06-21T03:56:28.4786180Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4786260Z               "line": 6068
2026-06-21T03:56:28.4786333Z             },
2026-06-21T03:56:28.4786414Z             {
2026-06-21T03:56:28.4786513Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4786599Z               "line": 6202
2026-06-21T03:56:28.4786681Z             },
2026-06-21T03:56:28.4786757Z             {
2026-06-21T03:56:28.4786847Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4786933Z               "line": 6368
2026-06-21T03:56:28.4787010Z             },
2026-06-21T03:56:28.4787090Z             {
2026-06-21T03:56:28.4787190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4787268Z               "line": 6896
2026-06-21T03:56:28.4787428Z             }
2026-06-21T03:56:28.4787500Z           ]
2026-06-21T03:56:28.4787582Z         },
2026-06-21T03:56:28.4787724Z         "int": {
2026-06-21T03:56:28.4787814Z           "complete": true,
2026-06-21T03:56:28.4787895Z           "evidence": [
2026-06-21T03:56:28.4787971Z             {
2026-06-21T03:56:28.4788093Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:56:28.4788174Z               "line": 16
2026-06-21T03:56:28.4788246Z             },
2026-06-21T03:56:28.4788327Z             {
2026-06-21T03:56:28.4788436Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:56:28.4788508Z               "line": 15
2026-06-21T03:56:28.4788589Z             }
2026-06-21T03:56:28.4788665Z           ]
2026-06-21T03:56:28.4788741Z         },
2026-06-21T03:56:28.4788827Z         "unit": {
2026-06-21T03:56:28.4788909Z           "complete": true,
2026-06-21T03:56:28.4789080Z           "evidence": [
2026-06-21T03:56:28.4789161Z             {
2026-06-21T03:56:28.4789276Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4789376Z               "line": 246
2026-06-21T03:56:28.4789466Z             },
2026-06-21T03:56:28.4789548Z             {
2026-06-21T03:56:28.4789657Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4789747Z               "line": 306
2026-06-21T03:56:28.4789825Z             },
2026-06-21T03:56:28.4789906Z             {
2026-06-21T03:56:28.4790010Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T03:56:28.4790091Z               "line": 363
2026-06-21T03:56:28.4790168Z             },
2026-06-21T03:56:28.4790244Z             {
2026-06-21T03:56:28.4790367Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4790455Z               "line": 286
2026-06-21T03:56:28.4790522Z             },
2026-06-21T03:56:28.4790597Z             {
2026-06-21T03:56:28.4790701Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.4790786Z               "line": 338
2026-06-21T03:56:28.4790867Z             },
2026-06-21T03:56:28.4790937Z             {
2026-06-21T03:56:28.4791060Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4791142Z               "line": 783
2026-06-21T03:56:28.4791223Z             },
2026-06-21T03:56:28.4791299Z             {
2026-06-21T03:56:28.4791398Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4791481Z               "line": 8751
2026-06-21T03:56:28.4791562Z             },
2026-06-21T03:56:28.4791646Z             {
2026-06-21T03:56:28.4791738Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4791819Z               "line": 8904
2026-06-21T03:56:28.4791896Z             },
2026-06-21T03:56:28.4791975Z             {
2026-06-21T03:56:28.4792072Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4792157Z               "line": 9493
2026-06-21T03:56:28.4792238Z             },
2026-06-21T03:56:28.4792319Z             {
2026-06-21T03:56:28.4792421Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4792500Z               "line": 9609
2026-06-21T03:56:28.4792586Z             }
2026-06-21T03:56:28.4792677Z           ]
2026-06-21T03:56:28.4792759Z         }
2026-06-21T03:56:28.4792839Z       }
2026-06-21T03:56:28.4792915Z     },
2026-06-21T03:56:28.4792987Z     {
2026-06-21T03:56:28.4793074Z       "id": "REQ-EP-6",
2026-06-21T03:56:28.4794552Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T03:56:28.4794639Z       "requiredStages": [
2026-06-21T03:56:28.4794710Z         "doc",
2026-06-21T03:56:28.4794895Z         "impl",
2026-06-21T03:56:28.4794973Z         "unit"
2026-06-21T03:56:28.4795058Z       ],
2026-06-21T03:56:28.4795239Z       "stages": {
2026-06-21T03:56:28.4795321Z         "doc": {
2026-06-21T03:56:28.4795410Z           "complete": true,
2026-06-21T03:56:28.4795496Z           "evidence": [
2026-06-21T03:56:28.4795573Z             {
2026-06-21T03:56:28.4795669Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4795758Z               "line": 227
2026-06-21T03:56:28.4795840Z             }
2026-06-21T03:56:28.4795922Z           ]
2026-06-21T03:56:28.4796002Z         },
2026-06-21T03:56:28.4796082Z         "impl": {
2026-06-21T03:56:28.4796172Z           "complete": true,
2026-06-21T03:56:28.4796259Z           "evidence": [
2026-06-21T03:56:28.4796340Z             {
2026-06-21T03:56:28.4796458Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4796539Z               "line": 212
2026-06-21T03:56:28.4796626Z             }
2026-06-21T03:56:28.4796693Z           ]
2026-06-21T03:56:28.4796773Z         },
2026-06-21T03:56:28.4796845Z         "int": {
2026-06-21T03:56:28.4796931Z           "complete": true,
2026-06-21T03:56:28.4797022Z           "evidence": [
2026-06-21T03:56:28.4797102Z             {
2026-06-21T03:56:28.4797213Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T03:56:28.4797289Z               "line": 18
2026-06-21T03:56:28.4797370Z             }
2026-06-21T03:56:28.4797440Z           ]
2026-06-21T03:56:28.4797528Z         },
2026-06-21T03:56:28.4797608Z         "unit": {
2026-06-21T03:56:28.4797689Z           "complete": true,
2026-06-21T03:56:28.4797774Z           "evidence": [
2026-06-21T03:56:28.4797852Z             {
2026-06-21T03:56:28.4797984Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.4798065Z               "line": 556
2026-06-21T03:56:28.4798147Z             },
2026-06-21T03:56:28.4798233Z             {
2026-06-21T03:56:28.4798332Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4798427Z               "line": 904
2026-06-21T03:56:28.4798498Z             }
2026-06-21T03:56:28.4798579Z           ]
2026-06-21T03:56:28.4798663Z         }
2026-06-21T03:56:28.4798744Z       }
2026-06-21T03:56:28.4798825Z     },
2026-06-21T03:56:28.4798907Z     {
2026-06-21T03:56:28.4799073Z       "id": "REQ-EP-7",
2026-06-21T03:56:28.4800685Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T03:56:28.4800791Z       "requiredStages": [
2026-06-21T03:56:28.4800865Z         "doc",
2026-06-21T03:56:28.4800942Z         "impl",
2026-06-21T03:56:28.4801029Z         "unit"
2026-06-21T03:56:28.4801106Z       ],
2026-06-21T03:56:28.4801189Z       "stages": {
2026-06-21T03:56:28.4801270Z         "doc": {
2026-06-21T03:56:28.4801356Z           "complete": true,
2026-06-21T03:56:28.4801446Z           "evidence": [
2026-06-21T03:56:28.4801521Z             {
2026-06-21T03:56:28.4801611Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.4801692Z               "line": 490
2026-06-21T03:56:28.4801774Z             }
2026-06-21T03:56:28.4801859Z           ]
2026-06-21T03:56:28.4801940Z         },
2026-06-21T03:56:28.4802027Z         "impl": {
2026-06-21T03:56:28.4802107Z           "complete": true,
2026-06-21T03:56:28.4802188Z           "evidence": [
2026-06-21T03:56:28.4802264Z             {
2026-06-21T03:56:28.4802370Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.4802456Z               "line": 505
2026-06-21T03:56:28.4802535Z             },
2026-06-21T03:56:28.4802622Z             {
2026-06-21T03:56:28.4802841Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.4802922Z               "line": 87
2026-06-21T03:56:28.4803112Z             },
2026-06-21T03:56:28.4803194Z             {
2026-06-21T03:56:28.4803324Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4803403Z               "line": 81
2026-06-21T03:56:28.4803485Z             },
2026-06-21T03:56:28.4803567Z             {
2026-06-21T03:56:28.4803691Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4803770Z               "line": 166
2026-06-21T03:56:28.4803855Z             },
2026-06-21T03:56:28.4803937Z             {
2026-06-21T03:56:28.4804036Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4804121Z               "line": 1645
2026-06-21T03:56:28.4804201Z             }
2026-06-21T03:56:28.4804288Z           ]
2026-06-21T03:56:28.4804369Z         },
2026-06-21T03:56:28.4804454Z         "int": {
2026-06-21T03:56:28.4804554Z           "complete": false,
2026-06-21T03:56:28.4804626Z           "evidence": []
2026-06-21T03:56:28.4804712Z         },
2026-06-21T03:56:28.4804797Z         "unit": {
2026-06-21T03:56:28.4804894Z           "complete": true,
2026-06-21T03:56:28.4804974Z           "evidence": [
2026-06-21T03:56:28.4805060Z             {
2026-06-21T03:56:28.4805170Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.4805251Z               "line": 623
2026-06-21T03:56:28.4805341Z             },
2026-06-21T03:56:28.4805407Z             {
2026-06-21T03:56:28.4805523Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.4805608Z               "line": 212
2026-06-21T03:56:28.4805694Z             },
2026-06-21T03:56:28.4805775Z             {
2026-06-21T03:56:28.4805886Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.4805975Z               "line": 307
2026-06-21T03:56:28.4806056Z             },
2026-06-21T03:56:28.4806138Z             {
2026-06-21T03:56:28.4806247Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4806338Z               "line": 7724
2026-06-21T03:56:28.4806409Z             },
2026-06-21T03:56:28.4806492Z             {
2026-06-21T03:56:28.4806590Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4806676Z               "line": 7751
2026-06-21T03:56:28.4806761Z             }
2026-06-21T03:56:28.4806838Z           ]
2026-06-21T03:56:28.4806919Z         }
2026-06-21T03:56:28.4807004Z       }
2026-06-21T03:56:28.4807085Z     },
2026-06-21T03:56:28.4807167Z     {
2026-06-21T03:56:28.4807253Z       "id": "REQ-FRONT-1",
2026-06-21T03:56:28.4807424Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T03:56:28.4807501Z       "requiredStages": [],
2026-06-21T03:56:28.4807582Z       "stages": {
2026-06-21T03:56:28.4807667Z         "doc": {
2026-06-21T03:56:28.4807748Z           "complete": false,
2026-06-21T03:56:28.4807829Z           "evidence": []
2026-06-21T03:56:28.4807906Z         },
2026-06-21T03:56:28.4807996Z         "impl": {
2026-06-21T03:56:28.4808083Z           "complete": false,
2026-06-21T03:56:28.4808168Z           "evidence": []
2026-06-21T03:56:28.4808249Z         },
2026-06-21T03:56:28.4808334Z         "int": {
2026-06-21T03:56:28.4808412Z           "complete": false,
2026-06-21T03:56:28.4808493Z           "evidence": []
2026-06-21T03:56:28.4808572Z         },
2026-06-21T03:56:28.4808644Z         "unit": {
2026-06-21T03:56:28.4808732Z           "complete": false,
2026-06-21T03:56:28.4808826Z           "evidence": []
2026-06-21T03:56:28.4808906Z         }
2026-06-21T03:56:28.4809077Z       }
2026-06-21T03:56:28.4809157Z     },
2026-06-21T03:56:28.4809237Z     {
2026-06-21T03:56:28.4809327Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T03:56:28.4814554Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T03:56:28.4814877Z       "requiredStages": [
2026-06-21T03:56:28.4814957Z         "int"
2026-06-21T03:56:28.4815033Z       ],
2026-06-21T03:56:28.4815120Z       "stages": {
2026-06-21T03:56:28.4815196Z         "doc": {
2026-06-21T03:56:28.4815286Z           "complete": false,
2026-06-21T03:56:28.4815367Z           "evidence": []
2026-06-21T03:56:28.4815454Z         },
2026-06-21T03:56:28.4815539Z         "impl": {
2026-06-21T03:56:28.4815624Z           "complete": false,
2026-06-21T03:56:28.4815705Z           "evidence": []
2026-06-21T03:56:28.4815793Z         },
2026-06-21T03:56:28.4815877Z         "int": {
2026-06-21T03:56:28.4815963Z           "complete": true,
2026-06-21T03:56:28.4816069Z           "evidence": [
2026-06-21T03:56:28.4816150Z             {
2026-06-21T03:56:28.4816278Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T03:56:28.4816369Z               "line": 300
2026-06-21T03:56:28.4816441Z             }
2026-06-21T03:56:28.4816526Z           ]
2026-06-21T03:56:28.4816602Z         },
2026-06-21T03:56:28.4816684Z         "unit": {
2026-06-21T03:56:28.4816761Z           "complete": false,
2026-06-21T03:56:28.4816854Z           "evidence": []
2026-06-21T03:56:28.4816936Z         }
2026-06-21T03:56:28.4817014Z       }
2026-06-21T03:56:28.4817100Z     },
2026-06-21T03:56:28.4817178Z     {
2026-06-21T03:56:28.4817283Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T03:56:28.4819849Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T03:56:28.4819964Z       "requiredStages": [
2026-06-21T03:56:28.4820042Z         "impl",
2026-06-21T03:56:28.4820126Z         "unit",
2026-06-21T03:56:28.4820203Z         "int"
2026-06-21T03:56:28.4820398Z       ],
2026-06-21T03:56:28.4820469Z       "stages": {
2026-06-21T03:56:28.4820551Z         "doc": {
2026-06-21T03:56:28.4820736Z           "complete": false,
2026-06-21T03:56:28.4820832Z           "evidence": []
2026-06-21T03:56:28.4820909Z         },
2026-06-21T03:56:28.4820995Z         "impl": {
2026-06-21T03:56:28.4821089Z           "complete": true,
2026-06-21T03:56:28.4821166Z           "evidence": [
2026-06-21T03:56:28.4821257Z             {
2026-06-21T03:56:28.4821376Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4821471Z               "line": 257
2026-06-21T03:56:28.4821553Z             }
2026-06-21T03:56:28.4821633Z           ]
2026-06-21T03:56:28.4821715Z         },
2026-06-21T03:56:28.4821791Z         "int": {
2026-06-21T03:56:28.4821882Z           "complete": true,
2026-06-21T03:56:28.4821967Z           "evidence": [
2026-06-21T03:56:28.4822048Z             {
2026-06-21T03:56:28.4822174Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T03:56:28.4822277Z               "line": 93
2026-06-21T03:56:28.4822357Z             }
2026-06-21T03:56:28.4822438Z           ]
2026-06-21T03:56:28.4822523Z         },
2026-06-21T03:56:28.4822608Z         "unit": {
2026-06-21T03:56:28.4822702Z           "complete": true,
2026-06-21T03:56:28.4822789Z           "evidence": [
2026-06-21T03:56:28.4822875Z             {
2026-06-21T03:56:28.4822989Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4823070Z               "line": 802
2026-06-21T03:56:28.4823147Z             },
2026-06-21T03:56:28.4823227Z             {
2026-06-21T03:56:28.4823341Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4823423Z               "line": 824
2026-06-21T03:56:28.4823500Z             },
2026-06-21T03:56:28.4823581Z             {
2026-06-21T03:56:28.4823689Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4823776Z               "line": 855
2026-06-21T03:56:28.4823857Z             }
2026-06-21T03:56:28.4823943Z           ]
2026-06-21T03:56:28.4824024Z         }
2026-06-21T03:56:28.4824105Z       }
2026-06-21T03:56:28.4824186Z     },
2026-06-21T03:56:28.4824276Z     {
2026-06-21T03:56:28.4824392Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T03:56:28.4826815Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T03:56:28.4826919Z       "requiredStages": [
2026-06-21T03:56:28.4827006Z         "doc",
2026-06-21T03:56:28.4827090Z         "impl",
2026-06-21T03:56:28.4827167Z         "unit",
2026-06-21T03:56:28.4827254Z         "int"
2026-06-21T03:56:28.4827321Z       ],
2026-06-21T03:56:28.4827405Z       "stages": {
2026-06-21T03:56:28.4827482Z         "doc": {
2026-06-21T03:56:28.4827569Z           "complete": true,
2026-06-21T03:56:28.4827655Z           "evidence": [
2026-06-21T03:56:28.4827734Z             {
2026-06-21T03:56:28.4827838Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4827924Z               "line": 333
2026-06-21T03:56:28.4828006Z             }
2026-06-21T03:56:28.4828086Z           ]
2026-06-21T03:56:28.4828167Z         },
2026-06-21T03:56:28.4828258Z         "impl": {
2026-06-21T03:56:28.4828335Z           "complete": true,
2026-06-21T03:56:28.4828420Z           "evidence": [
2026-06-21T03:56:28.4828569Z             {
2026-06-21T03:56:28.4828698Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4828854Z               "line": 494
2026-06-21T03:56:28.4828936Z             },
2026-06-21T03:56:28.4829102Z             {
2026-06-21T03:56:28.4829217Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4829312Z               "line": 499
2026-06-21T03:56:28.4829388Z             },
2026-06-21T03:56:28.4829469Z             {
2026-06-21T03:56:28.4829594Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4829669Z               "line": 874
2026-06-21T03:56:28.4829755Z             },
2026-06-21T03:56:28.4829837Z             {
2026-06-21T03:56:28.4829960Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4830041Z               "line": 915
2026-06-21T03:56:28.4830116Z             },
2026-06-21T03:56:28.4830198Z             {
2026-06-21T03:56:28.4830305Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4830404Z               "line": 926
2026-06-21T03:56:28.4830481Z             },
2026-06-21T03:56:28.4830578Z             {
2026-06-21T03:56:28.4830691Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.4830777Z               "line": 358
2026-06-21T03:56:28.4830859Z             }
2026-06-21T03:56:28.4830939Z           ]
2026-06-21T03:56:28.4831030Z         },
2026-06-21T03:56:28.4831106Z         "int": {
2026-06-21T03:56:28.4831188Z           "complete": true,
2026-06-21T03:56:28.4831273Z           "evidence": [
2026-06-21T03:56:28.4831354Z             {
2026-06-21T03:56:28.4831484Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T03:56:28.4831564Z               "line": 30
2026-06-21T03:56:28.4831645Z             }
2026-06-21T03:56:28.4831721Z           ]
2026-06-21T03:56:28.4831803Z         },
2026-06-21T03:56:28.4831883Z         "unit": {
2026-06-21T03:56:28.4831969Z           "complete": true,
2026-06-21T03:56:28.4832056Z           "evidence": [
2026-06-21T03:56:28.4832127Z             {
2026-06-21T03:56:28.4832250Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4832341Z               "line": 1493
2026-06-21T03:56:28.4832424Z             },
2026-06-21T03:56:28.4832508Z             {
2026-06-21T03:56:28.4832618Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4832699Z               "line": 1518
2026-06-21T03:56:28.4832781Z             },
2026-06-21T03:56:28.4832860Z             {
2026-06-21T03:56:28.4832969Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4833051Z               "line": 1535
2026-06-21T03:56:28.4833131Z             },
2026-06-21T03:56:28.4833215Z             {
2026-06-21T03:56:28.4833334Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4833421Z               "line": 1578
2026-06-21T03:56:28.4833502Z             }
2026-06-21T03:56:28.4833582Z           ]
2026-06-21T03:56:28.4833663Z         }
2026-06-21T03:56:28.4833745Z       }
2026-06-21T03:56:28.4833821Z     },
2026-06-21T03:56:28.4833915Z     {
2026-06-21T03:56:28.4834050Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T03:56:28.4836584Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T03:56:28.4836898Z       "requiredStages": [],
2026-06-21T03:56:28.4836979Z       "stages": {
2026-06-21T03:56:28.4837070Z         "doc": {
2026-06-21T03:56:28.4837155Z           "complete": false,
2026-06-21T03:56:28.4837247Z           "evidence": []
2026-06-21T03:56:28.4837331Z         },
2026-06-21T03:56:28.4837408Z         "impl": {
2026-06-21T03:56:28.4837489Z           "complete": false,
2026-06-21T03:56:28.4837581Z           "evidence": []
2026-06-21T03:56:28.4837660Z         },
2026-06-21T03:56:28.4837737Z         "int": {
2026-06-21T03:56:28.4837824Z           "complete": false,
2026-06-21T03:56:28.4837914Z           "evidence": []
2026-06-21T03:56:28.4837994Z         },
2026-06-21T03:56:28.4838080Z         "unit": {
2026-06-21T03:56:28.4838163Z           "complete": false,
2026-06-21T03:56:28.4838253Z           "evidence": []
2026-06-21T03:56:28.4838322Z         }
2026-06-21T03:56:28.4838417Z       }
2026-06-21T03:56:28.4838499Z     },
2026-06-21T03:56:28.4838576Z     {
2026-06-21T03:56:28.4838713Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T03:56:28.4842443Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T03:56:28.4842572Z       "requiredStages": [
2026-06-21T03:56:28.4842655Z         "impl",
2026-06-21T03:56:28.4842739Z         "unit",
2026-06-21T03:56:28.4842820Z         "int"
2026-06-21T03:56:28.4842901Z       ],
2026-06-21T03:56:28.4842984Z       "stages": {
2026-06-21T03:56:28.4843068Z         "doc": {
2026-06-21T03:56:28.4843149Z           "complete": false,
2026-06-21T03:56:28.4843236Z           "evidence": []
2026-06-21T03:56:28.4843322Z         },
2026-06-21T03:56:28.4843402Z         "impl": {
2026-06-21T03:56:28.4843492Z           "complete": true,
2026-06-21T03:56:28.4843582Z           "evidence": [
2026-06-21T03:56:28.4843668Z             {
2026-06-21T03:56:28.4843790Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4843875Z               "line": 570
2026-06-21T03:56:28.4843952Z             },
2026-06-21T03:56:28.4844019Z             {
2026-06-21T03:56:28.4844133Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4844214Z               "line": 594
2026-06-21T03:56:28.4846805Z             },
2026-06-21T03:56:28.4846910Z             {
2026-06-21T03:56:28.4847042Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4847134Z               "line": 620
2026-06-21T03:56:28.4847206Z             },
2026-06-21T03:56:28.4847287Z             {
2026-06-21T03:56:28.4847405Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4847492Z               "line": 679
2026-06-21T03:56:28.4847572Z             },
2026-06-21T03:56:28.4847788Z             {
2026-06-21T03:56:28.4847911Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.4848093Z               "line": 89
2026-06-21T03:56:28.4848169Z             },
2026-06-21T03:56:28.4848249Z             {
2026-06-21T03:56:28.4848360Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.4848451Z               "line": 134
2026-06-21T03:56:28.4848521Z             }
2026-06-21T03:56:28.4848603Z           ]
2026-06-21T03:56:28.4848684Z         },
2026-06-21T03:56:28.4848765Z         "int": {
2026-06-21T03:56:28.4848845Z           "complete": true,
2026-06-21T03:56:28.4848925Z           "evidence": [
2026-06-21T03:56:28.4849083Z             {
2026-06-21T03:56:28.4849230Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T03:56:28.4849311Z               "line": 20
2026-06-21T03:56:28.4849398Z             }
2026-06-21T03:56:28.4849479Z           ]
2026-06-21T03:56:28.4849559Z         },
2026-06-21T03:56:28.4849650Z         "unit": {
2026-06-21T03:56:28.4849742Z           "complete": true,
2026-06-21T03:56:28.4849818Z           "evidence": [
2026-06-21T03:56:28.4849902Z             {
2026-06-21T03:56:28.4850008Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.4850094Z               "line": 1047
2026-06-21T03:56:28.4850171Z             },
2026-06-21T03:56:28.4850251Z             {
2026-06-21T03:56:28.4850352Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.4850437Z               "line": 445
2026-06-21T03:56:28.4850518Z             }
2026-06-21T03:56:28.4850594Z           ]
2026-06-21T03:56:28.4850667Z         }
2026-06-21T03:56:28.4850747Z       }
2026-06-21T03:56:28.4850823Z     },
2026-06-21T03:56:28.4850905Z     {
2026-06-21T03:56:28.4851020Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T03:56:28.4853596Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T03:56:28.4853709Z       "requiredStages": [
2026-06-21T03:56:28.4853791Z         "doc",
2026-06-21T03:56:28.4853878Z         "impl",
2026-06-21T03:56:28.4853962Z         "unit",
2026-06-21T03:56:28.4854028Z         "int"
2026-06-21T03:56:28.4854113Z       ],
2026-06-21T03:56:28.4854190Z       "stages": {
2026-06-21T03:56:28.4854279Z         "doc": {
2026-06-21T03:56:28.4854369Z           "complete": true,
2026-06-21T03:56:28.4854460Z           "evidence": [
2026-06-21T03:56:28.4854541Z             {
2026-06-21T03:56:28.4854650Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4854735Z               "line": 302
2026-06-21T03:56:28.4854813Z             }
2026-06-21T03:56:28.4854898Z           ]
2026-06-21T03:56:28.4854979Z         },
2026-06-21T03:56:28.4855064Z         "impl": {
2026-06-21T03:56:28.4855147Z           "complete": true,
2026-06-21T03:56:28.4855227Z           "evidence": [
2026-06-21T03:56:28.4855308Z             {
2026-06-21T03:56:28.4855423Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.4855518Z               "line": 108
2026-06-21T03:56:28.4855585Z             },
2026-06-21T03:56:28.4855661Z             {
2026-06-21T03:56:28.4855777Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4855857Z               "line": 843
2026-06-21T03:56:28.4856048Z             },
2026-06-21T03:56:28.4856129Z             {
2026-06-21T03:56:28.4856242Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4856421Z               "line": 1043
2026-06-21T03:56:28.4856505Z             },
2026-06-21T03:56:28.4856585Z             {
2026-06-21T03:56:28.4856699Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4856780Z               "line": 23
2026-06-21T03:56:28.4856846Z             },
2026-06-21T03:56:28.4856931Z             {
2026-06-21T03:56:28.4857036Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4857127Z               "line": 113
2026-06-21T03:56:28.4857203Z             },
2026-06-21T03:56:28.4857273Z             {
2026-06-21T03:56:28.4857380Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4857465Z               "line": 158
2026-06-21T03:56:28.4857546Z             },
2026-06-21T03:56:28.4857612Z             {
2026-06-21T03:56:28.4857728Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4857813Z               "line": 218
2026-06-21T03:56:28.4857903Z             },
2026-06-21T03:56:28.4857980Z             {
2026-06-21T03:56:28.4858085Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4858171Z               "line": 261
2026-06-21T03:56:28.4858251Z             },
2026-06-21T03:56:28.4858329Z             {
2026-06-21T03:56:28.4858433Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4858519Z               "line": 275
2026-06-21T03:56:28.4858600Z             },
2026-06-21T03:56:28.4858677Z             {
2026-06-21T03:56:28.4858785Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4858871Z               "line": 320
2026-06-21T03:56:28.4859006Z             },
2026-06-21T03:56:28.4859090Z             {
2026-06-21T03:56:28.4859191Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4859288Z               "line": 347
2026-06-21T03:56:28.4859368Z             },
2026-06-21T03:56:28.4859448Z             {
2026-06-21T03:56:28.4859566Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4859648Z               "line": 359
2026-06-21T03:56:28.4859730Z             },
2026-06-21T03:56:28.4859805Z             {
2026-06-21T03:56:28.4859915Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4859997Z               "line": 373
2026-06-21T03:56:28.4860073Z             },
2026-06-21T03:56:28.4860157Z             {
2026-06-21T03:56:28.4860263Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4860354Z               "line": 400
2026-06-21T03:56:28.4860430Z             },
2026-06-21T03:56:28.4860501Z             {
2026-06-21T03:56:28.4860616Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4860696Z               "line": 643
2026-06-21T03:56:28.4860777Z             },
2026-06-21T03:56:28.4860864Z             {
2026-06-21T03:56:28.4860969Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4861055Z               "line": 989
2026-06-21T03:56:28.4861140Z             },
2026-06-21T03:56:28.4861222Z             {
2026-06-21T03:56:28.4861331Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4861412Z               "line": 260
2026-06-21T03:56:28.4861484Z             },
2026-06-21T03:56:28.4861571Z             {
2026-06-21T03:56:28.4861678Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4861769Z               "line": 1143
2026-06-21T03:56:28.4861850Z             },
2026-06-21T03:56:28.4861930Z             {
2026-06-21T03:56:28.4862033Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4862123Z               "line": 1215
2026-06-21T03:56:28.4862205Z             },
2026-06-21T03:56:28.4862283Z             {
2026-06-21T03:56:28.4862390Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4862582Z               "line": 1227
2026-06-21T03:56:28.4862663Z             },
2026-06-21T03:56:28.4862830Z             {
2026-06-21T03:56:28.4862935Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4863015Z               "line": 1842
2026-06-21T03:56:28.4863092Z             },
2026-06-21T03:56:28.4863174Z             {
2026-06-21T03:56:28.4863278Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4863358Z               "line": 188
2026-06-21T03:56:28.4863441Z             },
2026-06-21T03:56:28.4863517Z             {
2026-06-21T03:56:28.4863626Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4863712Z               "line": 265
2026-06-21T03:56:28.4863794Z             },
2026-06-21T03:56:28.4863878Z             {
2026-06-21T03:56:28.4863978Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4864061Z               "line": 276
2026-06-21T03:56:28.4864147Z             },
2026-06-21T03:56:28.4864235Z             {
2026-06-21T03:56:28.4864337Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4864438Z               "line": 329
2026-06-21T03:56:28.4864513Z             },
2026-06-21T03:56:28.4864593Z             {
2026-06-21T03:56:28.4864703Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4864784Z               "line": 56
2026-06-21T03:56:28.4864867Z             },
2026-06-21T03:56:28.4864948Z             {
2026-06-21T03:56:28.4865053Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4865139Z               "line": 188
2026-06-21T03:56:28.4865215Z             },
2026-06-21T03:56:28.4865296Z             {
2026-06-21T03:56:28.4865402Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:56:28.4865478Z               "line": 82
2026-06-21T03:56:28.4865563Z             },
2026-06-21T03:56:28.4865644Z             {
2026-06-21T03:56:28.4865759Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4865849Z               "line": 308
2026-06-21T03:56:28.4865940Z             },
2026-06-21T03:56:28.4866027Z             {
2026-06-21T03:56:28.4866135Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.4866221Z               "line": 424
2026-06-21T03:56:28.4866303Z             },
2026-06-21T03:56:28.4866384Z             {
2026-06-21T03:56:28.4866493Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.4866569Z               "line": 2006
2026-06-21T03:56:28.4866647Z             }
2026-06-21T03:56:28.4866727Z           ]
2026-06-21T03:56:28.4866807Z         },
2026-06-21T03:56:28.4866889Z         "int": {
2026-06-21T03:56:28.4866971Z           "complete": true,
2026-06-21T03:56:28.4867056Z           "evidence": [
2026-06-21T03:56:28.4867136Z             {
2026-06-21T03:56:28.4867245Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:56:28.4867327Z               "line": 57
2026-06-21T03:56:28.4867406Z             },
2026-06-21T03:56:28.4867491Z             {
2026-06-21T03:56:28.4867600Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T03:56:28.4867692Z               "line": 41
2026-06-21T03:56:28.4867763Z             }
2026-06-21T03:56:28.4867843Z           ]
2026-06-21T03:56:28.4867920Z         },
2026-06-21T03:56:28.4867997Z         "unit": {
2026-06-21T03:56:28.4868073Z           "complete": true,
2026-06-21T03:56:28.4868163Z           "evidence": [
2026-06-21T03:56:28.4868235Z             {
2026-06-21T03:56:28.4868354Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.4868435Z               "line": 532
2026-06-21T03:56:28.4868516Z             },
2026-06-21T03:56:28.4868589Z             {
2026-06-21T03:56:28.4868697Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.4868783Z               "line": 757
2026-06-21T03:56:28.4868855Z             },
2026-06-21T03:56:28.4868932Z             {
2026-06-21T03:56:28.4869122Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4869336Z               "line": 1067
2026-06-21T03:56:28.4869412Z             },
2026-06-21T03:56:28.4869580Z             {
2026-06-21T03:56:28.4869689Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4869775Z               "line": 1101
2026-06-21T03:56:28.4869858Z             },
2026-06-21T03:56:28.4869928Z             {
2026-06-21T03:56:28.4870036Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4870127Z               "line": 1143
2026-06-21T03:56:28.4870194Z             },
2026-06-21T03:56:28.4870266Z             {
2026-06-21T03:56:28.4870379Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4870465Z               "line": 1215
2026-06-21T03:56:28.4870542Z             },
2026-06-21T03:56:28.4870623Z             {
2026-06-21T03:56:28.4870736Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4870819Z               "line": 1228
2026-06-21T03:56:28.4870909Z             },
2026-06-21T03:56:28.4870985Z             {
2026-06-21T03:56:28.4871099Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4871186Z               "line": 1251
2026-06-21T03:56:28.4871266Z             },
2026-06-21T03:56:28.4871342Z             {
2026-06-21T03:56:28.4871458Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4871539Z               "line": 1277
2026-06-21T03:56:28.4871620Z             },
2026-06-21T03:56:28.4871705Z             {
2026-06-21T03:56:28.4871816Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4871896Z               "line": 1291
2026-06-21T03:56:28.4871982Z             },
2026-06-21T03:56:28.4872058Z             {
2026-06-21T03:56:28.4872173Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4872253Z               "line": 1315
2026-06-21T03:56:28.4872334Z             },
2026-06-21T03:56:28.4872410Z             {
2026-06-21T03:56:28.4872532Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4872612Z               "line": 1447
2026-06-21T03:56:28.4872698Z             },
2026-06-21T03:56:28.4872780Z             {
2026-06-21T03:56:28.4872889Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4872970Z               "line": 1623
2026-06-21T03:56:28.4873052Z             },
2026-06-21T03:56:28.4873128Z             {
2026-06-21T03:56:28.4873237Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4873323Z               "line": 1678
2026-06-21T03:56:28.4873400Z             },
2026-06-21T03:56:28.4873475Z             {
2026-06-21T03:56:28.4873584Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4873672Z               "line": 1724
2026-06-21T03:56:28.4873753Z             },
2026-06-21T03:56:28.4873829Z             {
2026-06-21T03:56:28.4873938Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4874029Z               "line": 1769
2026-06-21T03:56:28.4874100Z             },
2026-06-21T03:56:28.4874181Z             {
2026-06-21T03:56:28.4874301Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4874378Z               "line": 1813
2026-06-21T03:56:28.4874462Z             },
2026-06-21T03:56:28.4874543Z             {
2026-06-21T03:56:28.4874650Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4874735Z               "line": 1855
2026-06-21T03:56:28.4874820Z             },
2026-06-21T03:56:28.4874897Z             {
2026-06-21T03:56:28.4874998Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4875083Z               "line": 2176
2026-06-21T03:56:28.4875162Z             },
2026-06-21T03:56:28.4875243Z             {
2026-06-21T03:56:28.4875353Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4875437Z               "line": 217
2026-06-21T03:56:28.4875517Z             },
2026-06-21T03:56:28.4875666Z             {
2026-06-21T03:56:28.4875775Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4875919Z               "line": 233
2026-06-21T03:56:28.4876000Z             },
2026-06-21T03:56:28.4876076Z             {
2026-06-21T03:56:28.4876185Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4876267Z               "line": 254
2026-06-21T03:56:28.4876347Z             },
2026-06-21T03:56:28.4876433Z             {
2026-06-21T03:56:28.4876543Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4876630Z               "line": 265
2026-06-21T03:56:28.4876710Z             },
2026-06-21T03:56:28.4876791Z             {
2026-06-21T03:56:28.4876897Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4876972Z               "line": 278
2026-06-21T03:56:28.4877058Z             },
2026-06-21T03:56:28.4877134Z             {
2026-06-21T03:56:28.4877245Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4877343Z               "line": 289
2026-06-21T03:56:28.4877420Z             },
2026-06-21T03:56:28.4877507Z             {
2026-06-21T03:56:28.4877612Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4877701Z               "line": 301
2026-06-21T03:56:28.4877776Z             },
2026-06-21T03:56:28.4877858Z             {
2026-06-21T03:56:28.4877971Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4878046Z               "line": 312
2026-06-21T03:56:28.4878127Z             },
2026-06-21T03:56:28.4878209Z             {
2026-06-21T03:56:28.4878313Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4878394Z               "line": 323
2026-06-21T03:56:28.4878485Z             },
2026-06-21T03:56:28.4878557Z             {
2026-06-21T03:56:28.4878670Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4878756Z               "line": 332
2026-06-21T03:56:28.4878839Z             },
2026-06-21T03:56:28.4878919Z             {
2026-06-21T03:56:28.4879105Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4879205Z               "line": 342
2026-06-21T03:56:28.4879291Z             },
2026-06-21T03:56:28.4879376Z             {
2026-06-21T03:56:28.4879492Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T03:56:28.4879577Z               "line": 358
2026-06-21T03:56:28.4879658Z             },
2026-06-21T03:56:28.4879735Z             {
2026-06-21T03:56:28.4879844Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4879930Z               "line": 758
2026-06-21T03:56:28.4880011Z             },
2026-06-21T03:56:28.4880093Z             {
2026-06-21T03:56:28.4880196Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4880283Z               "line": 794
2026-06-21T03:56:28.4880350Z             },
2026-06-21T03:56:28.4880437Z             {
2026-06-21T03:56:28.4880549Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.4880638Z               "line": 966
2026-06-21T03:56:28.4880710Z             },
2026-06-21T03:56:28.4880793Z             {
2026-06-21T03:56:28.4880906Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:56:28.4880992Z               "line": 145
2026-06-21T03:56:28.4881069Z             },
2026-06-21T03:56:28.4881155Z             {
2026-06-21T03:56:28.4881264Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:56:28.4881360Z               "line": 224
2026-06-21T03:56:28.4881436Z             },
2026-06-21T03:56:28.4881522Z             {
2026-06-21T03:56:28.4881636Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T03:56:28.4881718Z               "line": 293
2026-06-21T03:56:28.4881798Z             },
2026-06-21T03:56:28.4881874Z             {
2026-06-21T03:56:28.4881979Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T03:56:28.4882061Z               "line": 17
2026-06-21T03:56:28.4882250Z             },
2026-06-21T03:56:28.4882338Z             {
2026-06-21T03:56:28.4882451Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T03:56:28.4882633Z               "line": 104
2026-06-21T03:56:28.4882700Z             }
2026-06-21T03:56:28.4882785Z           ]
2026-06-21T03:56:28.4882865Z         }
2026-06-21T03:56:28.4882946Z       }
2026-06-21T03:56:28.4883027Z     },
2026-06-21T03:56:28.4883106Z     {
2026-06-21T03:56:28.4883220Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T03:56:28.4886197Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T03:56:28.4886312Z       "requiredStages": [
2026-06-21T03:56:28.4886397Z         "doc",
2026-06-21T03:56:28.4886474Z         "impl",
2026-06-21T03:56:28.4886560Z         "unit",
2026-06-21T03:56:28.4886646Z         "int"
2026-06-21T03:56:28.4886721Z       ],
2026-06-21T03:56:28.4886803Z       "stages": {
2026-06-21T03:56:28.4886889Z         "doc": {
2026-06-21T03:56:28.4886984Z           "complete": true,
2026-06-21T03:56:28.4887065Z           "evidence": [
2026-06-21T03:56:28.4887151Z             {
2026-06-21T03:56:28.4887260Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4887346Z               "line": 388
2026-06-21T03:56:28.4887428Z             }
2026-06-21T03:56:28.4887509Z           ]
2026-06-21T03:56:28.4887593Z         },
2026-06-21T03:56:28.4887675Z         "impl": {
2026-06-21T03:56:28.4887767Z           "complete": true,
2026-06-21T03:56:28.4887853Z           "evidence": [
2026-06-21T03:56:28.4887932Z             {
2026-06-21T03:56:28.4888043Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4888125Z               "line": 773
2026-06-21T03:56:28.4888205Z             },
2026-06-21T03:56:28.4888285Z             {
2026-06-21T03:56:28.4888394Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4888475Z               "line": 796
2026-06-21T03:56:28.4888554Z             }
2026-06-21T03:56:28.4888640Z           ]
2026-06-21T03:56:28.4888716Z         },
2026-06-21T03:56:28.4888807Z         "int": {
2026-06-21T03:56:28.4888892Z           "complete": true,
2026-06-21T03:56:28.4889065Z           "evidence": [
2026-06-21T03:56:28.4889160Z             {
2026-06-21T03:56:28.4889283Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.4889365Z               "line": 228
2026-06-21T03:56:28.4889455Z             },
2026-06-21T03:56:28.4889536Z             {
2026-06-21T03:56:28.4889651Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:56:28.4889733Z               "line": 468
2026-06-21T03:56:28.4889817Z             }
2026-06-21T03:56:28.4889884Z           ]
2026-06-21T03:56:28.4889965Z         },
2026-06-21T03:56:28.4890033Z         "unit": {
2026-06-21T03:56:28.4890118Z           "complete": true,
2026-06-21T03:56:28.4890199Z           "evidence": [
2026-06-21T03:56:28.4890280Z             {
2026-06-21T03:56:28.4890395Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.4890475Z               "line": 1495
2026-06-21T03:56:28.4890663Z             }
2026-06-21T03:56:28.4890743Z           ]
2026-06-21T03:56:28.4890824Z         }
2026-06-21T03:56:28.4890992Z       }
2026-06-21T03:56:28.4891076Z     },
2026-06-21T03:56:28.4891152Z     {
2026-06-21T03:56:28.4891266Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T03:56:28.4894797Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T03:56:28.4894916Z       "requiredStages": [
2026-06-21T03:56:28.4894996Z         "doc",
2026-06-21T03:56:28.4895077Z         "impl",
2026-06-21T03:56:28.4895164Z         "unit"
2026-06-21T03:56:28.4895249Z       ],
2026-06-21T03:56:28.4895335Z       "stages": {
2026-06-21T03:56:28.4895421Z         "doc": {
2026-06-21T03:56:28.4895512Z           "complete": true,
2026-06-21T03:56:28.4895597Z           "evidence": [
2026-06-21T03:56:28.4895678Z             {
2026-06-21T03:56:28.4895784Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4895874Z               "line": 395
2026-06-21T03:56:28.4895960Z             }
2026-06-21T03:56:28.4896037Z           ]
2026-06-21T03:56:28.4896123Z         },
2026-06-21T03:56:28.4896203Z         "impl": {
2026-06-21T03:56:28.4896292Z           "complete": true,
2026-06-21T03:56:28.4896383Z           "evidence": [
2026-06-21T03:56:28.4896459Z             {
2026-06-21T03:56:28.4896572Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4896661Z               "line": 75
2026-06-21T03:56:28.4896739Z             }
2026-06-21T03:56:28.4896815Z           ]
2026-06-21T03:56:28.4896896Z         },
2026-06-21T03:56:28.4896981Z         "int": {
2026-06-21T03:56:28.4897068Z           "complete": false,
2026-06-21T03:56:28.4897149Z           "evidence": []
2026-06-21T03:56:28.4897229Z         },
2026-06-21T03:56:28.4897310Z         "unit": {
2026-06-21T03:56:28.4897392Z           "complete": true,
2026-06-21T03:56:28.4897477Z           "evidence": [
2026-06-21T03:56:28.4897563Z             {
2026-06-21T03:56:28.4897668Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.4897755Z               "line": 632
2026-06-21T03:56:28.4897830Z             }
2026-06-21T03:56:28.4897906Z           ]
2026-06-21T03:56:28.4897983Z         }
2026-06-21T03:56:28.4898069Z       }
2026-06-21T03:56:28.4898149Z     },
2026-06-21T03:56:28.4898225Z     {
2026-06-21T03:56:28.4898327Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T03:56:28.4898497Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T03:56:28.4898594Z       "requiredStages": [
2026-06-21T03:56:28.4898675Z         "impl",
2026-06-21T03:56:28.4898760Z         "unit"
2026-06-21T03:56:28.4898845Z       ],
2026-06-21T03:56:28.4898925Z       "stages": {
2026-06-21T03:56:28.4899096Z         "doc": {
2026-06-21T03:56:28.4899176Z           "complete": false,
2026-06-21T03:56:28.4899420Z           "evidence": []
2026-06-21T03:56:28.4899500Z         },
2026-06-21T03:56:28.4899591Z         "impl": {
2026-06-21T03:56:28.4899763Z           "complete": true,
2026-06-21T03:56:28.4899843Z           "evidence": [
2026-06-21T03:56:28.4899921Z             {
2026-06-21T03:56:28.4900030Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4900120Z               "line": 172
2026-06-21T03:56:28.4900196Z             },
2026-06-21T03:56:28.4900278Z             {
2026-06-21T03:56:28.4900392Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4900468Z               "line": 18
2026-06-21T03:56:28.4900550Z             },
2026-06-21T03:56:28.4900631Z             {
2026-06-21T03:56:28.4900731Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4900817Z               "line": 100
2026-06-21T03:56:28.4900898Z             }
2026-06-21T03:56:28.4900984Z           ]
2026-06-21T03:56:28.4901060Z         },
2026-06-21T03:56:28.4901141Z         "int": {
2026-06-21T03:56:28.4901237Z           "complete": false,
2026-06-21T03:56:28.4901322Z           "evidence": []
2026-06-21T03:56:28.4901407Z         },
2026-06-21T03:56:28.4901495Z         "unit": {
2026-06-21T03:56:28.4901586Z           "complete": true,
2026-06-21T03:56:28.4901664Z           "evidence": [
2026-06-21T03:56:28.4901750Z             {
2026-06-21T03:56:28.4901850Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.4901942Z               "line": 857
2026-06-21T03:56:28.4902017Z             },
2026-06-21T03:56:28.4902102Z             {
2026-06-21T03:56:28.4902209Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4902294Z               "line": 161
2026-06-21T03:56:28.4902374Z             },
2026-06-21T03:56:28.4902446Z             {
2026-06-21T03:56:28.4902542Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.4902628Z               "line": 233
2026-06-21T03:56:28.4902713Z             }
2026-06-21T03:56:28.4902790Z           ]
2026-06-21T03:56:28.4902871Z         }
2026-06-21T03:56:28.4902947Z       }
2026-06-21T03:56:28.4903018Z     },
2026-06-21T03:56:28.4903100Z     {
2026-06-21T03:56:28.4903200Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T03:56:28.4903624Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T03:56:28.4903719Z       "requiredStages": [
2026-06-21T03:56:28.4903792Z         "impl",
2026-06-21T03:56:28.4903872Z         "unit"
2026-06-21T03:56:28.4903947Z       ],
2026-06-21T03:56:28.4904023Z       "stages": {
2026-06-21T03:56:28.4904105Z         "doc": {
2026-06-21T03:56:28.4904189Z           "complete": true,
2026-06-21T03:56:28.4904274Z           "evidence": [
2026-06-21T03:56:28.4904349Z             {
2026-06-21T03:56:28.4904451Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4904537Z               "line": 220
2026-06-21T03:56:28.4904612Z             }
2026-06-21T03:56:28.4904689Z           ]
2026-06-21T03:56:28.4904765Z         },
2026-06-21T03:56:28.4904851Z         "impl": {
2026-06-21T03:56:28.4904941Z           "complete": true,
2026-06-21T03:56:28.4905027Z           "evidence": [
2026-06-21T03:56:28.4905109Z             {
2026-06-21T03:56:28.4905232Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.4905313Z               "line": 316
2026-06-21T03:56:28.4905395Z             },
2026-06-21T03:56:28.4905476Z             {
2026-06-21T03:56:28.4905580Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.4905666Z               "line": 356
2026-06-21T03:56:28.4905743Z             },
2026-06-21T03:56:28.4905833Z             {
2026-06-21T03:56:28.4905947Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.4906035Z               "line": 578
2026-06-21T03:56:28.4906119Z             },
2026-06-21T03:56:28.4906200Z             {
2026-06-21T03:56:28.4906311Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.4906481Z               "line": 77
2026-06-21T03:56:28.4906625Z             }
2026-06-21T03:56:28.4906707Z           ]
2026-06-21T03:56:28.4906786Z         },
2026-06-21T03:56:28.4906871Z         "int": {
2026-06-21T03:56:28.4906952Z           "complete": false,
2026-06-21T03:56:28.4907042Z           "evidence": []
2026-06-21T03:56:28.4907122Z         },
2026-06-21T03:56:28.4907202Z         "unit": {
2026-06-21T03:56:28.4907299Z           "complete": true,
2026-06-21T03:56:28.4907375Z           "evidence": [
2026-06-21T03:56:28.4907461Z             {
2026-06-21T03:56:28.4907560Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.4907652Z               "line": 747
2026-06-21T03:56:28.4907728Z             },
2026-06-21T03:56:28.4907813Z             {
2026-06-21T03:56:28.4907934Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.4908019Z               "line": 785
2026-06-21T03:56:28.4908113Z             },
2026-06-21T03:56:28.4908185Z             {
2026-06-21T03:56:28.4908305Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.4908390Z               "line": 166
2026-06-21T03:56:28.4908471Z             }
2026-06-21T03:56:28.4908553Z           ]
2026-06-21T03:56:28.4908629Z         }
2026-06-21T03:56:28.4908714Z       }
2026-06-21T03:56:28.4908791Z     },
2026-06-21T03:56:28.4908868Z     {
2026-06-21T03:56:28.4909067Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T03:56:28.4909609Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T03:56:28.4909703Z       "requiredStages": [
2026-06-21T03:56:28.4909779Z         "impl",
2026-06-21T03:56:28.4909860Z         "unit"
2026-06-21T03:56:28.4909937Z       ],
2026-06-21T03:56:28.4910018Z       "stages": {
2026-06-21T03:56:28.4910103Z         "doc": {
2026-06-21T03:56:28.4910195Z           "complete": false,
2026-06-21T03:56:28.4910280Z           "evidence": []
2026-06-21T03:56:28.4910365Z         },
2026-06-21T03:56:28.4910451Z         "impl": {
2026-06-21T03:56:28.4910538Z           "complete": true,
2026-06-21T03:56:28.4910619Z           "evidence": [
2026-06-21T03:56:28.4910699Z             {
2026-06-21T03:56:28.4910815Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:56:28.4910900Z               "line": 22
2026-06-21T03:56:28.4910981Z             },
2026-06-21T03:56:28.4911062Z             {
2026-06-21T03:56:28.4911168Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.4911257Z               "line": 487
2026-06-21T03:56:28.4911338Z             },
2026-06-21T03:56:28.4911415Z             {
2026-06-21T03:56:28.4911534Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:56:28.4911615Z               "line": 17
2026-06-21T03:56:28.4911696Z             },
2026-06-21T03:56:28.4911778Z             {
2026-06-21T03:56:28.4911896Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:56:28.4911987Z               "line": 147
2026-06-21T03:56:28.4912069Z             },
2026-06-21T03:56:28.4912150Z             {
2026-06-21T03:56:28.4912272Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4912362Z               "line": 226
2026-06-21T03:56:28.4912439Z             },
2026-06-21T03:56:28.4912526Z             {
2026-06-21T03:56:28.4912648Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4912725Z               "line": 251
2026-06-21T03:56:28.4912806Z             },
2026-06-21T03:56:28.4912887Z             {
2026-06-21T03:56:28.4913006Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4913088Z               "line": 277
2026-06-21T03:56:28.4913169Z             },
2026-06-21T03:56:28.4913254Z             {
2026-06-21T03:56:28.4913360Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.4913550Z               "line": 124
2026-06-21T03:56:28.4913631Z             },
2026-06-21T03:56:28.4913802Z             {
2026-06-21T03:56:28.4913917Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.4914009Z               "line": 224
2026-06-21T03:56:28.4914089Z             }
2026-06-21T03:56:28.4914169Z           ]
2026-06-21T03:56:28.4914251Z         },
2026-06-21T03:56:28.4914328Z         "int": {
2026-06-21T03:56:28.4914418Z           "complete": false,
2026-06-21T03:56:28.4914503Z           "evidence": []
2026-06-21T03:56:28.4914578Z         },
2026-06-21T03:56:28.4914665Z         "unit": {
2026-06-21T03:56:28.4914745Z           "complete": true,
2026-06-21T03:56:28.4914834Z           "evidence": [
2026-06-21T03:56:28.4914914Z             {
2026-06-21T03:56:28.4915030Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:56:28.4915115Z               "line": 63
2026-06-21T03:56:28.4915201Z             },
2026-06-21T03:56:28.4915297Z             {
2026-06-21T03:56:28.4915397Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:56:28.4915487Z               "line": 73
2026-06-21T03:56:28.4915563Z             },
2026-06-21T03:56:28.4915646Z             {
2026-06-21T03:56:28.4915750Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T03:56:28.4918397Z               "line": 85
2026-06-21T03:56:28.4918479Z             },
2026-06-21T03:56:28.4918560Z             {
2026-06-21T03:56:28.4918688Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.4918770Z               "line": 346
2026-06-21T03:56:28.4918851Z             },
2026-06-21T03:56:28.4918927Z             {
2026-06-21T03:56:28.4919133Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:56:28.4919227Z               "line": 281
2026-06-21T03:56:28.4919303Z             },
2026-06-21T03:56:28.4919389Z             {
2026-06-21T03:56:28.4919495Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:56:28.4919594Z               "line": 322
2026-06-21T03:56:28.4919671Z             },
2026-06-21T03:56:28.4919762Z             {
2026-06-21T03:56:28.4919876Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T03:56:28.4919955Z               "line": 360
2026-06-21T03:56:28.4920036Z             },
2026-06-21T03:56:28.4920113Z             {
2026-06-21T03:56:28.4920239Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.4920320Z               "line": 688
2026-06-21T03:56:28.4920397Z             },
2026-06-21T03:56:28.4920469Z             {
2026-06-21T03:56:28.4920573Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.4920649Z               "line": 397
2026-06-21T03:56:28.4920731Z             },
2026-06-21T03:56:28.4920808Z             {
2026-06-21T03:56:28.4920916Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.4921002Z               "line": 440
2026-06-21T03:56:28.4921079Z             }
2026-06-21T03:56:28.4921150Z           ]
2026-06-21T03:56:28.4921226Z         }
2026-06-21T03:56:28.4921297Z       }
2026-06-21T03:56:28.4921384Z     },
2026-06-21T03:56:28.4921456Z     {
2026-06-21T03:56:28.4921551Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T03:56:28.4921761Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T03:56:28.4921851Z       "requiredStages": [
2026-06-21T03:56:28.4921932Z         "impl",
2026-06-21T03:56:28.4922010Z         "unit"
2026-06-21T03:56:28.4922090Z       ],
2026-06-21T03:56:28.4922170Z       "stages": {
2026-06-21T03:56:28.4922237Z         "doc": {
2026-06-21T03:56:28.4922324Z           "complete": false,
2026-06-21T03:56:28.4922395Z           "evidence": []
2026-06-21T03:56:28.4922480Z         },
2026-06-21T03:56:28.4922552Z         "impl": {
2026-06-21T03:56:28.4922634Z           "complete": true,
2026-06-21T03:56:28.4922724Z           "evidence": [
2026-06-21T03:56:28.4922794Z             {
2026-06-21T03:56:28.4923038Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:56:28.4923114Z               "line": 169
2026-06-21T03:56:28.4923304Z             }
2026-06-21T03:56:28.4923381Z           ]
2026-06-21T03:56:28.4923462Z         },
2026-06-21T03:56:28.4923542Z         "int": {
2026-06-21T03:56:28.4923629Z           "complete": true,
2026-06-21T03:56:28.4923709Z           "evidence": [
2026-06-21T03:56:28.4923786Z             {
2026-06-21T03:56:28.4923895Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T03:56:28.4923977Z               "line": 44
2026-06-21T03:56:28.4924052Z             },
2026-06-21T03:56:28.4924133Z             {
2026-06-21T03:56:28.4924225Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T03:56:28.4924311Z               "line": 66
2026-06-21T03:56:28.4924391Z             }
2026-06-21T03:56:28.4924472Z           ]
2026-06-21T03:56:28.4924540Z         },
2026-06-21T03:56:28.4924626Z         "unit": {
2026-06-21T03:56:28.4924710Z           "complete": true,
2026-06-21T03:56:28.4924796Z           "evidence": [
2026-06-21T03:56:28.4924879Z             {
2026-06-21T03:56:28.4924992Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:56:28.4925072Z               "line": 186
2026-06-21T03:56:28.4925138Z             },
2026-06-21T03:56:28.4925220Z             {
2026-06-21T03:56:28.4925324Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:56:28.4925404Z               "line": 238
2026-06-21T03:56:28.4925484Z             },
2026-06-21T03:56:28.4925561Z             {
2026-06-21T03:56:28.4925662Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T03:56:28.4925747Z               "line": 266
2026-06-21T03:56:28.4925828Z             }
2026-06-21T03:56:28.4925910Z           ]
2026-06-21T03:56:28.4925986Z         }
2026-06-21T03:56:28.4926066Z       }
2026-06-21T03:56:28.4926148Z     },
2026-06-21T03:56:28.4926225Z     {
2026-06-21T03:56:28.4926343Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T03:56:28.4930697Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T03:56:28.4930828Z       "requiredStages": [],
2026-06-21T03:56:28.4930918Z       "stages": {
2026-06-21T03:56:28.4930991Z         "doc": {
2026-06-21T03:56:28.4931082Z           "complete": false,
2026-06-21T03:56:28.4931162Z           "evidence": []
2026-06-21T03:56:28.4931233Z         },
2026-06-21T03:56:28.4931315Z         "impl": {
2026-06-21T03:56:28.4931401Z           "complete": false,
2026-06-21T03:56:28.4931486Z           "evidence": []
2026-06-21T03:56:28.4931552Z         },
2026-06-21T03:56:28.4931625Z         "int": {
2026-06-21T03:56:28.4931810Z           "complete": false,
2026-06-21T03:56:28.4931892Z           "evidence": []
2026-06-21T03:56:28.4931973Z         },
2026-06-21T03:56:28.4932129Z         "unit": {
2026-06-21T03:56:28.4932220Z           "complete": false,
2026-06-21T03:56:28.4932302Z           "evidence": []
2026-06-21T03:56:28.4932387Z         }
2026-06-21T03:56:28.4932468Z       }
2026-06-21T03:56:28.4932545Z     },
2026-06-21T03:56:28.4932626Z     {
2026-06-21T03:56:28.4932750Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T03:56:28.4946571Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T03:56:28.4946943Z       "requiredStages": [
2026-06-21T03:56:28.4947030Z         "doc",
2026-06-21T03:56:28.4947115Z         "impl",
2026-06-21T03:56:28.4947196Z         "unit",
2026-06-21T03:56:28.4947278Z         "int"
2026-06-21T03:56:28.4947355Z       ],
2026-06-21T03:56:28.4947435Z       "stages": {
2026-06-21T03:56:28.4947501Z         "doc": {
2026-06-21T03:56:28.4947588Z           "complete": true,
2026-06-21T03:56:28.4947669Z           "evidence": [
2026-06-21T03:56:28.4947750Z             {
2026-06-21T03:56:28.4947854Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4947936Z               "line": 468
2026-06-21T03:56:28.4948026Z             }
2026-06-21T03:56:28.4948098Z           ]
2026-06-21T03:56:28.4948178Z         },
2026-06-21T03:56:28.4948260Z         "impl": {
2026-06-21T03:56:28.4948346Z           "complete": true,
2026-06-21T03:56:28.4948436Z           "evidence": [
2026-06-21T03:56:28.4948508Z             {
2026-06-21T03:56:28.4948618Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4948698Z               "line": 342
2026-06-21T03:56:28.4948784Z             },
2026-06-21T03:56:28.4948866Z             {
2026-06-21T03:56:28.4949031Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.4949117Z               "line": 1188
2026-06-21T03:56:28.4949193Z             },
2026-06-21T03:56:28.4949279Z             {
2026-06-21T03:56:28.4949391Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4949481Z               "line": 715
2026-06-21T03:56:28.4949563Z             }
2026-06-21T03:56:28.4949640Z           ]
2026-06-21T03:56:28.4949719Z         },
2026-06-21T03:56:28.4949796Z         "int": {
2026-06-21T03:56:28.4949888Z           "complete": true,
2026-06-21T03:56:28.4949964Z           "evidence": [
2026-06-21T03:56:28.4950044Z             {
2026-06-21T03:56:28.4950159Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.4950254Z               "line": 1163
2026-06-21T03:56:28.4950335Z             },
2026-06-21T03:56:28.4950406Z             {
2026-06-21T03:56:28.4950522Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.4950607Z               "line": 1264
2026-06-21T03:56:28.4950692Z             },
2026-06-21T03:56:28.4950774Z             {
2026-06-21T03:56:28.4950884Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.4950959Z               "line": 1152
2026-06-21T03:56:28.4951041Z             }
2026-06-21T03:56:28.4951123Z           ]
2026-06-21T03:56:28.4951199Z         },
2026-06-21T03:56:28.4951279Z         "unit": {
2026-06-21T03:56:28.4951370Z           "complete": true,
2026-06-21T03:56:28.4951457Z           "evidence": [
2026-06-21T03:56:28.4951523Z             {
2026-06-21T03:56:28.4951736Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4951822Z               "line": 2624
2026-06-21T03:56:28.4951986Z             }
2026-06-21T03:56:28.4952063Z           ]
2026-06-21T03:56:28.4952139Z         }
2026-06-21T03:56:28.4952220Z       }
2026-06-21T03:56:28.4952301Z     },
2026-06-21T03:56:28.4952382Z     {
2026-06-21T03:56:28.4952502Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T03:56:28.4952902Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T03:56:28.4952992Z       "requiredStages": [
2026-06-21T03:56:28.4953079Z         "impl",
2026-06-21T03:56:28.4953159Z         "unit",
2026-06-21T03:56:28.4953235Z         "int"
2026-06-21T03:56:28.4953321Z       ],
2026-06-21T03:56:28.4953399Z       "stages": {
2026-06-21T03:56:28.4953474Z         "doc": {
2026-06-21T03:56:28.4953555Z           "complete": false,
2026-06-21T03:56:28.4953641Z           "evidence": []
2026-06-21T03:56:28.4953719Z         },
2026-06-21T03:56:28.4953803Z         "impl": {
2026-06-21T03:56:28.4953884Z           "complete": true,
2026-06-21T03:56:28.4953971Z           "evidence": [
2026-06-21T03:56:28.4954043Z             {
2026-06-21T03:56:28.4954160Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4954247Z               "line": 178
2026-06-21T03:56:28.4954329Z             },
2026-06-21T03:56:28.4954400Z             {
2026-06-21T03:56:28.4954508Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4954593Z               "line": 226
2026-06-21T03:56:28.4954666Z             },
2026-06-21T03:56:28.4954747Z             {
2026-06-21T03:56:28.4954851Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.4954932Z               "line": 79
2026-06-21T03:56:28.4955009Z             },
2026-06-21T03:56:28.4955076Z             {
2026-06-21T03:56:28.4955185Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.4955276Z               "line": 52
2026-06-21T03:56:28.4955348Z             },
2026-06-21T03:56:28.4955438Z             {
2026-06-21T03:56:28.4955547Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.4955634Z               "line": 263
2026-06-21T03:56:28.4955710Z             },
2026-06-21T03:56:28.4955790Z             {
2026-06-21T03:56:28.4955910Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4955991Z               "line": 27
2026-06-21T03:56:28.4956076Z             },
2026-06-21T03:56:28.4956153Z             {
2026-06-21T03:56:28.4956278Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4956358Z               "line": 79
2026-06-21T03:56:28.4956434Z             },
2026-06-21T03:56:28.4956511Z             {
2026-06-21T03:56:28.4956616Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4956706Z               "line": 102
2026-06-21T03:56:28.4956786Z             },
2026-06-21T03:56:28.4956891Z             {
2026-06-21T03:56:28.4956999Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.4957093Z               "line": 116
2026-06-21T03:56:28.4957174Z             }
2026-06-21T03:56:28.4957251Z           ]
2026-06-21T03:56:28.4957333Z         },
2026-06-21T03:56:28.4957403Z         "int": {
2026-06-21T03:56:28.4957489Z           "complete": true,
2026-06-21T03:56:28.4957571Z           "evidence": [
2026-06-21T03:56:28.4957642Z             {
2026-06-21T03:56:28.4957765Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T03:56:28.4957848Z               "line": 43
2026-06-21T03:56:28.4957929Z             }
2026-06-21T03:56:28.4958009Z           ]
2026-06-21T03:56:28.4958089Z         },
2026-06-21T03:56:28.4958163Z         "unit": {
2026-06-21T03:56:28.4958253Z           "complete": true,
2026-06-21T03:56:28.4958338Z           "evidence": [
2026-06-21T03:56:28.4958414Z             {
2026-06-21T03:56:28.4958624Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.4958700Z               "line": 678
2026-06-21T03:56:28.4958864Z             },
2026-06-21T03:56:28.4959029Z             {
2026-06-21T03:56:28.4959145Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.4959225Z               "line": 495
2026-06-21T03:56:28.4959301Z             },
2026-06-21T03:56:28.4959388Z             {
2026-06-21T03:56:28.4959508Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4959597Z               "line": 124
2026-06-21T03:56:28.4959677Z             },
2026-06-21T03:56:28.4959758Z             {
2026-06-21T03:56:28.4959876Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4959956Z               "line": 143
2026-06-21T03:56:28.4960032Z             },
2026-06-21T03:56:28.4960113Z             {
2026-06-21T03:56:28.4960219Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4960303Z               "line": 160
2026-06-21T03:56:28.4960390Z             },
2026-06-21T03:56:28.4960462Z             {
2026-06-21T03:56:28.4960571Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4960656Z               "line": 187
2026-06-21T03:56:28.4960734Z             },
2026-06-21T03:56:28.4960810Z             {
2026-06-21T03:56:28.4960919Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T03:56:28.4961000Z               "line": 206
2026-06-21T03:56:28.4961082Z             },
2026-06-21T03:56:28.4961162Z             {
2026-06-21T03:56:28.4961276Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.4961359Z               "line": 229
2026-06-21T03:56:28.4961440Z             }
2026-06-21T03:56:28.4961514Z           ]
2026-06-21T03:56:28.4961596Z         }
2026-06-21T03:56:28.4961679Z       }
2026-06-21T03:56:28.4961760Z     },
2026-06-21T03:56:28.4961839Z     {
2026-06-21T03:56:28.4961954Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T03:56:28.4962570Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T03:56:28.4962661Z       "requiredStages": [
2026-06-21T03:56:28.4962743Z         "impl",
2026-06-21T03:56:28.4962813Z         "unit"
2026-06-21T03:56:28.4962885Z       ],
2026-06-21T03:56:28.4962966Z       "stages": {
2026-06-21T03:56:28.4963043Z         "doc": {
2026-06-21T03:56:28.4963133Z           "complete": false,
2026-06-21T03:56:28.4963214Z           "evidence": []
2026-06-21T03:56:28.4963296Z         },
2026-06-21T03:56:28.4963376Z         "impl": {
2026-06-21T03:56:28.4963462Z           "complete": true,
2026-06-21T03:56:28.4963548Z           "evidence": [
2026-06-21T03:56:28.4963625Z             {
2026-06-21T03:56:28.4963743Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4963829Z               "line": 1174
2026-06-21T03:56:28.4963911Z             },
2026-06-21T03:56:28.4963992Z             {
2026-06-21T03:56:28.4964092Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.4964173Z               "line": 1400
2026-06-21T03:56:28.4964250Z             }
2026-06-21T03:56:28.4964330Z           ]
2026-06-21T03:56:28.4964416Z         },
2026-06-21T03:56:28.4964492Z         "int": {
2026-06-21T03:56:28.4964574Z           "complete": false,
2026-06-21T03:56:28.4964659Z           "evidence": []
2026-06-21T03:56:28.4964735Z         },
2026-06-21T03:56:28.4964817Z         "unit": {
2026-06-21T03:56:28.4964908Z           "complete": true,
2026-06-21T03:56:28.4964993Z           "evidence": [
2026-06-21T03:56:28.4965068Z             {
2026-06-21T03:56:28.4965192Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:56:28.4965274Z               "line": 161
2026-06-21T03:56:28.4965349Z             }
2026-06-21T03:56:28.4965425Z           ]
2026-06-21T03:56:28.4965621Z         }
2026-06-21T03:56:28.4965702Z       }
2026-06-21T03:56:28.4965768Z     },
2026-06-21T03:56:28.4965846Z     {
2026-06-21T03:56:28.4966050Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T03:56:28.4967763Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T03:56:28.4967864Z       "requiredStages": [
2026-06-21T03:56:28.4967940Z         "impl",
2026-06-21T03:56:28.4968025Z         "unit"
2026-06-21T03:56:28.4968107Z       ],
2026-06-21T03:56:28.4968193Z       "stages": {
2026-06-21T03:56:28.4968273Z         "doc": {
2026-06-21T03:56:28.4968364Z           "complete": false,
2026-06-21T03:56:28.4968460Z           "evidence": []
2026-06-21T03:56:28.4968546Z         },
2026-06-21T03:56:28.4968617Z         "impl": {
2026-06-21T03:56:28.4968708Z           "complete": true,
2026-06-21T03:56:28.4968794Z           "evidence": [
2026-06-21T03:56:28.4968860Z             {
2026-06-21T03:56:28.4969080Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.4969161Z               "line": 257
2026-06-21T03:56:28.4969246Z             }
2026-06-21T03:56:28.4969318Z           ]
2026-06-21T03:56:28.4969409Z         },
2026-06-21T03:56:28.4969504Z         "int": {
2026-06-21T03:56:28.4969590Z           "complete": false,
2026-06-21T03:56:28.4969672Z           "evidence": []
2026-06-21T03:56:28.4969753Z         },
2026-06-21T03:56:28.4969837Z         "unit": {
2026-06-21T03:56:28.4969914Z           "complete": true,
2026-06-21T03:56:28.4970006Z           "evidence": [
2026-06-21T03:56:28.4970086Z             {
2026-06-21T03:56:28.4970194Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.4970275Z               "line": 360
2026-06-21T03:56:28.4970356Z             }
2026-06-21T03:56:28.4970436Z           ]
2026-06-21T03:56:28.4970516Z         }
2026-06-21T03:56:28.4970592Z       }
2026-06-21T03:56:28.4970669Z     },
2026-06-21T03:56:28.4970745Z     {
2026-06-21T03:56:28.4970845Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T03:56:28.4972625Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T03:56:28.4972723Z       "requiredStages": [
2026-06-21T03:56:28.4972794Z         "impl",
2026-06-21T03:56:28.4972875Z         "unit"
2026-06-21T03:56:28.4972956Z       ],
2026-06-21T03:56:28.4973031Z       "stages": {
2026-06-21T03:56:28.4973116Z         "doc": {
2026-06-21T03:56:28.4973202Z           "complete": false,
2026-06-21T03:56:28.4973288Z           "evidence": []
2026-06-21T03:56:28.4973365Z         },
2026-06-21T03:56:28.4973450Z         "impl": {
2026-06-21T03:56:28.4973536Z           "complete": true,
2026-06-21T03:56:28.4973622Z           "evidence": [
2026-06-21T03:56:28.4973703Z             {
2026-06-21T03:56:28.4973822Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.4973913Z               "line": 1018
2026-06-21T03:56:28.4973999Z             },
2026-06-21T03:56:28.4974074Z             {
2026-06-21T03:56:28.4974298Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4974379Z               "line": 283
2026-06-21T03:56:28.4974557Z             },
2026-06-21T03:56:28.4974638Z             {
2026-06-21T03:56:28.4974747Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4974834Z               "line": 316
2026-06-21T03:56:28.4974914Z             },
2026-06-21T03:56:28.4974995Z             {
2026-06-21T03:56:28.4975101Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:56:28.4975182Z               "line": 26
2026-06-21T03:56:28.4975266Z             }
2026-06-21T03:56:28.4975348Z           ]
2026-06-21T03:56:28.4975430Z         },
2026-06-21T03:56:28.4975511Z         "int": {
2026-06-21T03:56:28.4975595Z           "complete": false,
2026-06-21T03:56:28.4975671Z           "evidence": []
2026-06-21T03:56:28.4975757Z         },
2026-06-21T03:56:28.4975838Z         "unit": {
2026-06-21T03:56:28.4975928Z           "complete": true,
2026-06-21T03:56:28.4976028Z           "evidence": [
2026-06-21T03:56:28.4976105Z             {
2026-06-21T03:56:28.4976215Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:56:28.4976290Z               "line": 271
2026-06-21T03:56:28.4976377Z             },
2026-06-21T03:56:28.4976459Z             {
2026-06-21T03:56:28.4976567Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T03:56:28.4976658Z               "line": 348
2026-06-21T03:56:28.4976725Z             }
2026-06-21T03:56:28.4976811Z           ]
2026-06-21T03:56:28.4976892Z         }
2026-06-21T03:56:28.4976973Z       }
2026-06-21T03:56:28.4977060Z     },
2026-06-21T03:56:28.4977140Z     {
2026-06-21T03:56:28.4977244Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T03:56:28.4977417Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T03:56:28.4977501Z       "requiredStages": [
2026-06-21T03:56:28.4977573Z         "impl",
2026-06-21T03:56:28.4977655Z         "unit"
2026-06-21T03:56:28.4977737Z       ],
2026-06-21T03:56:28.4977821Z       "stages": {
2026-06-21T03:56:28.4977906Z         "doc": {
2026-06-21T03:56:28.4977996Z           "complete": false,
2026-06-21T03:56:28.4978082Z           "evidence": []
2026-06-21T03:56:28.4978161Z         },
2026-06-21T03:56:28.4978242Z         "impl": {
2026-06-21T03:56:28.4978338Z           "complete": true,
2026-06-21T03:56:28.4978420Z           "evidence": [
2026-06-21T03:56:28.4978500Z             {
2026-06-21T03:56:28.4978610Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4978691Z               "line": 40
2026-06-21T03:56:28.4978768Z             },
2026-06-21T03:56:28.4978848Z             {
2026-06-21T03:56:28.4979044Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4979129Z               "line": 103
2026-06-21T03:56:28.4979210Z             },
2026-06-21T03:56:28.4979288Z             {
2026-06-21T03:56:28.4979411Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4979487Z               "line": 218
2026-06-21T03:56:28.4979568Z             },
2026-06-21T03:56:28.4979650Z             {
2026-06-21T03:56:28.4979759Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4979844Z               "line": 323
2026-06-21T03:56:28.4979922Z             }
2026-06-21T03:56:28.4980002Z           ]
2026-06-21T03:56:28.4980083Z         },
2026-06-21T03:56:28.4980159Z         "int": {
2026-06-21T03:56:28.4980242Z           "complete": false,
2026-06-21T03:56:28.4980322Z           "evidence": []
2026-06-21T03:56:28.4980407Z         },
2026-06-21T03:56:28.4980484Z         "unit": {
2026-06-21T03:56:28.4980571Z           "complete": true,
2026-06-21T03:56:28.4980651Z           "evidence": [
2026-06-21T03:56:28.4980731Z             {
2026-06-21T03:56:28.4980835Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4980912Z               "line": 361
2026-06-21T03:56:28.4980996Z             },
2026-06-21T03:56:28.4981077Z             {
2026-06-21T03:56:28.4981330Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4981415Z               "line": 433
2026-06-21T03:56:28.4981582Z             },
2026-06-21T03:56:28.4981668Z             {
2026-06-21T03:56:28.4981767Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4981855Z               "line": 496
2026-06-21T03:56:28.4981925Z             },
2026-06-21T03:56:28.4982006Z             {
2026-06-21T03:56:28.4982106Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4982193Z               "line": 517
2026-06-21T03:56:28.4982268Z             }
2026-06-21T03:56:28.4982340Z           ]
2026-06-21T03:56:28.4982416Z         }
2026-06-21T03:56:28.4982498Z       }
2026-06-21T03:56:28.4982569Z     },
2026-06-21T03:56:28.4982640Z     {
2026-06-21T03:56:28.4982755Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T03:56:28.4985046Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T03:56:28.4985155Z       "requiredStages": [
2026-06-21T03:56:28.4985231Z         "impl",
2026-06-21T03:56:28.4985317Z         "unit"
2026-06-21T03:56:28.4985384Z       ],
2026-06-21T03:56:28.4985465Z       "stages": {
2026-06-21T03:56:28.4985546Z         "doc": {
2026-06-21T03:56:28.4985661Z           "complete": false,
2026-06-21T03:56:28.4985752Z           "evidence": []
2026-06-21T03:56:28.4985831Z         },
2026-06-21T03:56:28.4985922Z         "impl": {
2026-06-21T03:56:28.4986009Z           "complete": true,
2026-06-21T03:56:28.4986095Z           "evidence": [
2026-06-21T03:56:28.4986169Z             {
2026-06-21T03:56:28.4986293Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.4986398Z               "line": 402
2026-06-21T03:56:28.4986498Z             },
2026-06-21T03:56:28.4986593Z             {
2026-06-21T03:56:28.4986704Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.4986794Z               "line": 446
2026-06-21T03:56:28.4986884Z             }
2026-06-21T03:56:28.4986966Z           ]
2026-06-21T03:56:28.4987080Z         },
2026-06-21T03:56:28.4987184Z         "int": {
2026-06-21T03:56:28.4987281Z           "complete": false,
2026-06-21T03:56:28.4987366Z           "evidence": []
2026-06-21T03:56:28.4987457Z         },
2026-06-21T03:56:28.4987552Z         "unit": {
2026-06-21T03:56:28.4987653Z           "complete": true,
2026-06-21T03:56:28.4987738Z           "evidence": [
2026-06-21T03:56:28.4987828Z             {
2026-06-21T03:56:28.4987949Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.4988024Z               "line": 910
2026-06-21T03:56:28.4988110Z             }
2026-06-21T03:56:28.4988191Z           ]
2026-06-21T03:56:28.4988278Z         }
2026-06-21T03:56:28.4988358Z       }
2026-06-21T03:56:28.4988438Z     },
2026-06-21T03:56:28.4988518Z     {
2026-06-21T03:56:28.4988638Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T03:56:28.4988755Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T03:56:28.4988845Z       "requiredStages": [
2026-06-21T03:56:28.4988927Z         "impl",
2026-06-21T03:56:28.4989088Z         "unit"
2026-06-21T03:56:28.4989170Z       ],
2026-06-21T03:56:28.4989252Z       "stages": {
2026-06-21T03:56:28.4989333Z         "doc": {
2026-06-21T03:56:28.4989422Z           "complete": false,
2026-06-21T03:56:28.4989628Z           "evidence": []
2026-06-21T03:56:28.4989718Z         },
2026-06-21T03:56:28.4989981Z         "impl": {
2026-06-21T03:56:28.4990066Z           "complete": true,
2026-06-21T03:56:28.4990148Z           "evidence": [
2026-06-21T03:56:28.4990215Z             {
2026-06-21T03:56:28.4990324Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4990410Z               "line": 116
2026-06-21T03:56:28.4990521Z             },
2026-06-21T03:56:28.4990610Z             {
2026-06-21T03:56:28.4990738Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4990845Z               "line": 211
2026-06-21T03:56:28.4990948Z             }
2026-06-21T03:56:28.4991030Z           ]
2026-06-21T03:56:28.4991107Z         },
2026-06-21T03:56:28.4991188Z         "int": {
2026-06-21T03:56:28.4991267Z           "complete": false,
2026-06-21T03:56:28.4991361Z           "evidence": []
2026-06-21T03:56:28.4991448Z         },
2026-06-21T03:56:28.4991528Z         "unit": {
2026-06-21T03:56:28.4991622Z           "complete": true,
2026-06-21T03:56:28.4991698Z           "evidence": [
2026-06-21T03:56:28.4991789Z             {
2026-06-21T03:56:28.4991890Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4991989Z               "line": 388
2026-06-21T03:56:28.4992070Z             },
2026-06-21T03:56:28.4992152Z             {
2026-06-21T03:56:28.4992251Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.4992332Z               "line": 469
2026-06-21T03:56:28.4992424Z             }
2026-06-21T03:56:28.4992505Z           ]
2026-06-21T03:56:28.4992580Z         }
2026-06-21T03:56:28.4992656Z       }
2026-06-21T03:56:28.4992729Z     },
2026-06-21T03:56:28.4992814Z     {
2026-06-21T03:56:28.4992933Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T03:56:28.4994015Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T03:56:28.4994132Z       "requiredStages": [
2026-06-21T03:56:28.4994217Z         "impl",
2026-06-21T03:56:28.4994303Z         "unit"
2026-06-21T03:56:28.4994370Z       ],
2026-06-21T03:56:28.4994452Z       "stages": {
2026-06-21T03:56:28.4994536Z         "doc": {
2026-06-21T03:56:28.4994618Z           "complete": true,
2026-06-21T03:56:28.4994695Z           "evidence": [
2026-06-21T03:56:28.4994771Z             {
2026-06-21T03:56:28.4994875Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.4994962Z               "line": 206
2026-06-21T03:56:28.4995048Z             }
2026-06-21T03:56:28.4995133Z           ]
2026-06-21T03:56:28.4995213Z         },
2026-06-21T03:56:28.4995305Z         "impl": {
2026-06-21T03:56:28.4995386Z           "complete": true,
2026-06-21T03:56:28.4995486Z           "evidence": [
2026-06-21T03:56:28.4995567Z             {
2026-06-21T03:56:28.4995677Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4995772Z               "line": 691
2026-06-21T03:56:28.4995853Z             },
2026-06-21T03:56:28.4995931Z             {
2026-06-21T03:56:28.4996029Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4996120Z               "line": 791
2026-06-21T03:56:28.4996197Z             },
2026-06-21T03:56:28.4996283Z             {
2026-06-21T03:56:28.4996410Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4996497Z               "line": 1120
2026-06-21T03:56:28.4996584Z             },
2026-06-21T03:56:28.4996659Z             {
2026-06-21T03:56:28.4996777Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.4996858Z               "line": 184
2026-06-21T03:56:28.4996940Z             }
2026-06-21T03:56:28.4997021Z           ]
2026-06-21T03:56:28.4997182Z         },
2026-06-21T03:56:28.4997260Z         "int": {
2026-06-21T03:56:28.4997341Z           "complete": false,
2026-06-21T03:56:28.4997560Z           "evidence": []
2026-06-21T03:56:28.4997688Z         },
2026-06-21T03:56:28.4997773Z         "unit": {
2026-06-21T03:56:28.4997851Z           "complete": true,
2026-06-21T03:56:28.4997941Z           "evidence": [
2026-06-21T03:56:28.4998027Z             {
2026-06-21T03:56:28.4998136Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.4998213Z               "line": 1169
2026-06-21T03:56:28.4998293Z             },
2026-06-21T03:56:28.4998379Z             {
2026-06-21T03:56:28.4998499Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:56:28.4998580Z               "line": 44
2026-06-21T03:56:28.4998665Z             },
2026-06-21T03:56:28.4998742Z             {
2026-06-21T03:56:28.4998867Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T03:56:28.4999022Z               "line": 52
2026-06-21T03:56:28.4999108Z             },
2026-06-21T03:56:28.4999194Z             {
2026-06-21T03:56:28.4999296Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:56:28.4999391Z               "line": 57
2026-06-21T03:56:28.4999468Z             },
2026-06-21T03:56:28.4999545Z             {
2026-06-21T03:56:28.4999672Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T03:56:28.4999749Z               "line": 54
2026-06-21T03:56:28.4999835Z             }
2026-06-21T03:56:28.4999912Z           ]
2026-06-21T03:56:28.4999997Z         }
2026-06-21T03:56:28.5000074Z       }
2026-06-21T03:56:28.5000159Z     },
2026-06-21T03:56:28.5000241Z     {
2026-06-21T03:56:28.5000364Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T03:56:28.5000579Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T03:56:28.5000664Z       "requiredStages": [
2026-06-21T03:56:28.5000742Z         "impl",
2026-06-21T03:56:28.5000817Z         "unit"
2026-06-21T03:56:28.5000894Z       ],
2026-06-21T03:56:28.5000974Z       "stages": {
2026-06-21T03:56:28.5001057Z         "doc": {
2026-06-21T03:56:28.5001151Z           "complete": false,
2026-06-21T03:56:28.5001232Z           "evidence": []
2026-06-21T03:56:28.5001313Z         },
2026-06-21T03:56:28.5001400Z         "impl": {
2026-06-21T03:56:28.5001489Z           "complete": true,
2026-06-21T03:56:28.5001575Z           "evidence": [
2026-06-21T03:56:28.5001662Z             {
2026-06-21T03:56:28.5001776Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5001860Z               "line": 26
2026-06-21T03:56:28.5001945Z             },
2026-06-21T03:56:28.5002022Z             {
2026-06-21T03:56:28.5002135Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5002211Z               "line": 135
2026-06-21T03:56:28.5002297Z             },
2026-06-21T03:56:28.5002383Z             {
2026-06-21T03:56:28.5002502Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5002597Z               "line": 26
2026-06-21T03:56:28.5002665Z             },
2026-06-21T03:56:28.5002760Z             {
2026-06-21T03:56:28.5005502Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5005622Z               "line": 237
2026-06-21T03:56:28.5005698Z             }
2026-06-21T03:56:28.5005778Z           ]
2026-06-21T03:56:28.5005861Z         },
2026-06-21T03:56:28.5005941Z         "int": {
2026-06-21T03:56:28.5006022Z           "complete": false,
2026-06-21T03:56:28.5006113Z           "evidence": []
2026-06-21T03:56:28.5006195Z         },
2026-06-21T03:56:28.5006275Z         "unit": {
2026-06-21T03:56:28.5006365Z           "complete": true,
2026-06-21T03:56:28.5006447Z           "evidence": [
2026-06-21T03:56:28.5006528Z             {
2026-06-21T03:56:28.5006646Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5006732Z               "line": 161
2026-06-21T03:56:28.5006815Z             },
2026-06-21T03:56:28.5007047Z             {
2026-06-21T03:56:28.5007158Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5007337Z               "line": 170
2026-06-21T03:56:28.5007404Z             },
2026-06-21T03:56:28.5007485Z             {
2026-06-21T03:56:28.5007590Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5007675Z               "line": 179
2026-06-21T03:56:28.5007757Z             },
2026-06-21T03:56:28.5007834Z             {
2026-06-21T03:56:28.5007943Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5008028Z               "line": 190
2026-06-21T03:56:28.5008110Z             },
2026-06-21T03:56:28.5008191Z             {
2026-06-21T03:56:28.5008295Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5008381Z               "line": 199
2026-06-21T03:56:28.5008463Z             },
2026-06-21T03:56:28.5008543Z             {
2026-06-21T03:56:28.5008648Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5008740Z               "line": 216
2026-06-21T03:56:28.5008825Z             },
2026-06-21T03:56:28.5008902Z             {
2026-06-21T03:56:28.5009102Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T03:56:28.5009178Z               "line": 242
2026-06-21T03:56:28.5009254Z             },
2026-06-21T03:56:28.5009326Z             {
2026-06-21T03:56:28.5009431Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5009516Z               "line": 295
2026-06-21T03:56:28.5009596Z             },
2026-06-21T03:56:28.5009677Z             {
2026-06-21T03:56:28.5009782Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5009861Z               "line": 244
2026-06-21T03:56:28.5009937Z             },
2026-06-21T03:56:28.5010023Z             {
2026-06-21T03:56:28.5010139Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5010208Z               "line": 265
2026-06-21T03:56:28.5010290Z             },
2026-06-21T03:56:28.5010367Z             {
2026-06-21T03:56:28.5010486Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5010566Z               "line": 293
2026-06-21T03:56:28.5010653Z             },
2026-06-21T03:56:28.5010734Z             {
2026-06-21T03:56:28.5010838Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5010919Z               "line": 317
2026-06-21T03:56:28.5010997Z             },
2026-06-21T03:56:28.5011082Z             {
2026-06-21T03:56:28.5011191Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T03:56:28.5011268Z               "line": 327
2026-06-21T03:56:28.5011354Z             },
2026-06-21T03:56:28.5011425Z             {
2026-06-21T03:56:28.5011544Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.5011626Z               "line": 540
2026-06-21T03:56:28.5011702Z             }
2026-06-21T03:56:28.5011783Z           ]
2026-06-21T03:56:28.5011864Z         }
2026-06-21T03:56:28.5011946Z       }
2026-06-21T03:56:28.5012026Z     },
2026-06-21T03:56:28.5012107Z     {
2026-06-21T03:56:28.5012227Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T03:56:28.5016968Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T03:56:28.5017292Z       "requiredStages": [],
2026-06-21T03:56:28.5017375Z       "stages": {
2026-06-21T03:56:28.5017450Z         "doc": {
2026-06-21T03:56:28.5017545Z           "complete": false,
2026-06-21T03:56:28.5017647Z           "evidence": []
2026-06-21T03:56:28.5017723Z         },
2026-06-21T03:56:28.5017807Z         "impl": {
2026-06-21T03:56:28.5017902Z           "complete": false,
2026-06-21T03:56:28.5017978Z           "evidence": []
2026-06-21T03:56:28.5018055Z         },
2026-06-21T03:56:28.5018136Z         "int": {
2026-06-21T03:56:28.5018221Z           "complete": false,
2026-06-21T03:56:28.5018293Z           "evidence": []
2026-06-21T03:56:28.5018370Z         },
2026-06-21T03:56:28.5018441Z         "unit": {
2026-06-21T03:56:28.5018527Z           "complete": false,
2026-06-21T03:56:28.5018608Z           "evidence": []
2026-06-21T03:56:28.5018689Z         }
2026-06-21T03:56:28.5018770Z       }
2026-06-21T03:56:28.5018841Z     },
2026-06-21T03:56:28.5018913Z     {
2026-06-21T03:56:28.5019099Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T03:56:28.5020607Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T03:56:28.5020717Z       "requiredStages": [
2026-06-21T03:56:28.5020797Z         "impl",
2026-06-21T03:56:28.5020879Z         "unit",
2026-06-21T03:56:28.5020956Z         "int"
2026-06-21T03:56:28.5021036Z       ],
2026-06-21T03:56:28.5021107Z       "stages": {
2026-06-21T03:56:28.5021189Z         "doc": {
2026-06-21T03:56:28.5021280Z           "complete": false,
2026-06-21T03:56:28.5021361Z           "evidence": []
2026-06-21T03:56:28.5021441Z         },
2026-06-21T03:56:28.5021519Z         "impl": {
2026-06-21T03:56:28.5021619Z           "complete": true,
2026-06-21T03:56:28.5021699Z           "evidence": [
2026-06-21T03:56:28.5021785Z             {
2026-06-21T03:56:28.5021914Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5022000Z               "line": 538
2026-06-21T03:56:28.5022085Z             },
2026-06-21T03:56:28.5022153Z             {
2026-06-21T03:56:28.5022262Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.5022348Z               "line": 625
2026-06-21T03:56:28.5022429Z             },
2026-06-21T03:56:28.5022516Z             {
2026-06-21T03:56:28.5022652Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:56:28.5022739Z               "line": 21
2026-06-21T03:56:28.5022807Z             }
2026-06-21T03:56:28.5022892Z           ]
2026-06-21T03:56:28.5022957Z         },
2026-06-21T03:56:28.5023042Z         "int": {
2026-06-21T03:56:28.5023124Z           "complete": true,
2026-06-21T03:56:28.5023209Z           "evidence": [
2026-06-21T03:56:28.5023288Z             {
2026-06-21T03:56:28.5023417Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:56:28.5023608Z               "line": 236
2026-06-21T03:56:28.5023780Z             },
2026-06-21T03:56:28.5023860Z             {
2026-06-21T03:56:28.5023998Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T03:56:28.5024080Z               "line": 396
2026-06-21T03:56:28.5024161Z             },
2026-06-21T03:56:28.5024229Z             {
2026-06-21T03:56:28.5024375Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5024462Z               "line": 1481
2026-06-21T03:56:28.5024537Z             },
2026-06-21T03:56:28.5024604Z             {
2026-06-21T03:56:28.5024739Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5024824Z               "line": 1633
2026-06-21T03:56:28.5024905Z             }
2026-06-21T03:56:28.5024986Z           ]
2026-06-21T03:56:28.5025063Z         },
2026-06-21T03:56:28.5025148Z         "unit": {
2026-06-21T03:56:28.5025243Z           "complete": true,
2026-06-21T03:56:28.5025330Z           "evidence": [
2026-06-21T03:56:28.5025412Z             {
2026-06-21T03:56:28.5025529Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5025609Z               "line": 887
2026-06-21T03:56:28.5025690Z             }
2026-06-21T03:56:28.5025771Z           ]
2026-06-21T03:56:28.5025855Z         }
2026-06-21T03:56:28.5025935Z       }
2026-06-21T03:56:28.5026017Z     },
2026-06-21T03:56:28.5026099Z     {
2026-06-21T03:56:28.5026217Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T03:56:28.5026366Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T03:56:28.5026447Z       "requiredStages": [
2026-06-21T03:56:28.5026527Z         "impl",
2026-06-21T03:56:28.5026608Z         "unit"
2026-06-21T03:56:28.5026686Z       ],
2026-06-21T03:56:28.5026766Z       "stages": {
2026-06-21T03:56:28.5026856Z         "doc": {
2026-06-21T03:56:28.5026943Z           "complete": false,
2026-06-21T03:56:28.5027038Z           "evidence": []
2026-06-21T03:56:28.5027119Z         },
2026-06-21T03:56:28.5027195Z         "impl": {
2026-06-21T03:56:28.5027291Z           "complete": true,
2026-06-21T03:56:28.5027376Z           "evidence": [
2026-06-21T03:56:28.5027452Z             {
2026-06-21T03:56:28.5027552Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.5027630Z               "line": 25
2026-06-21T03:56:28.5027700Z             },
2026-06-21T03:56:28.5027781Z             {
2026-06-21T03:56:28.5027887Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5027969Z               "line": 26
2026-06-21T03:56:28.5028048Z             },
2026-06-21T03:56:28.5028129Z             {
2026-06-21T03:56:28.5028230Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5028321Z               "line": 159
2026-06-21T03:56:28.5028386Z             }
2026-06-21T03:56:28.5028457Z           ]
2026-06-21T03:56:28.5028524Z         },
2026-06-21T03:56:28.5028620Z         "int": {
2026-06-21T03:56:28.5028710Z           "complete": false,
2026-06-21T03:56:28.5028791Z           "evidence": []
2026-06-21T03:56:28.5028882Z         },
2026-06-21T03:56:28.5029025Z         "unit": {
2026-06-21T03:56:28.5029120Z           "complete": true,
2026-06-21T03:56:28.5029187Z           "evidence": [
2026-06-21T03:56:28.5029273Z             {
2026-06-21T03:56:28.5029378Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.5029458Z               "line": 188
2026-06-21T03:56:28.5029541Z             },
2026-06-21T03:56:28.5029616Z             {
2026-06-21T03:56:28.5029725Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.5029812Z               "line": 240
2026-06-21T03:56:28.5029893Z             },
2026-06-21T03:56:28.5029974Z             {
2026-06-21T03:56:28.5030074Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5030156Z               "line": 186
2026-06-21T03:56:28.5030236Z             }
2026-06-21T03:56:28.5030417Z           ]
2026-06-21T03:56:28.5030495Z         }
2026-06-21T03:56:28.5030580Z       }
2026-06-21T03:56:28.5030655Z     },
2026-06-21T03:56:28.5030831Z     {
2026-06-21T03:56:28.5030930Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T03:56:28.5031081Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T03:56:28.5031177Z       "requiredStages": [
2026-06-21T03:56:28.5031259Z         "impl",
2026-06-21T03:56:28.5031343Z         "unit"
2026-06-21T03:56:28.5031415Z       ],
2026-06-21T03:56:28.5031497Z       "stages": {
2026-06-21T03:56:28.5031582Z         "doc": {
2026-06-21T03:56:28.5031667Z           "complete": false,
2026-06-21T03:56:28.5031754Z           "evidence": []
2026-06-21T03:56:28.5031821Z         },
2026-06-21T03:56:28.5031902Z         "impl": {
2026-06-21T03:56:28.5031982Z           "complete": true,
2026-06-21T03:56:28.5032064Z           "evidence": [
2026-06-21T03:56:28.5032145Z             {
2026-06-21T03:56:28.5032245Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5032340Z               "line": 48
2026-06-21T03:56:28.5032413Z             },
2026-06-21T03:56:28.5032502Z             {
2026-06-21T03:56:28.5032607Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5032679Z               "line": 55
2026-06-21T03:56:28.5032761Z             },
2026-06-21T03:56:28.5032831Z             {
2026-06-21T03:56:28.5032941Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5033023Z               "line": 74
2026-06-21T03:56:28.5033104Z             },
2026-06-21T03:56:28.5033184Z             {
2026-06-21T03:56:28.5033284Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5033367Z               "line": 91
2026-06-21T03:56:28.5033447Z             }
2026-06-21T03:56:28.5033527Z           ]
2026-06-21T03:56:28.5033598Z         },
2026-06-21T03:56:28.5033674Z         "int": {
2026-06-21T03:56:28.5033755Z           "complete": false,
2026-06-21T03:56:28.5033844Z           "evidence": []
2026-06-21T03:56:28.5033929Z         },
2026-06-21T03:56:28.5034006Z         "unit": {
2026-06-21T03:56:28.5034097Z           "complete": true,
2026-06-21T03:56:28.5034178Z           "evidence": [
2026-06-21T03:56:28.5034258Z             {
2026-06-21T03:56:28.5034364Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5034445Z               "line": 149
2026-06-21T03:56:28.5034525Z             },
2026-06-21T03:56:28.5034606Z             {
2026-06-21T03:56:28.5034712Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5034793Z               "line": 166
2026-06-21T03:56:28.5034878Z             },
2026-06-21T03:56:28.5034960Z             {
2026-06-21T03:56:28.5035065Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5035141Z               "line": 176
2026-06-21T03:56:28.5035217Z             },
2026-06-21T03:56:28.5035299Z             {
2026-06-21T03:56:28.5035403Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5035498Z               "line": 194
2026-06-21T03:56:28.5035580Z             },
2026-06-21T03:56:28.5035666Z             {
2026-06-21T03:56:28.5035774Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5035856Z               "line": 207
2026-06-21T03:56:28.5035933Z             }
2026-06-21T03:56:28.5036010Z           ]
2026-06-21T03:56:28.5036093Z         }
2026-06-21T03:56:28.5036174Z       }
2026-06-21T03:56:28.5036250Z     },
2026-06-21T03:56:28.5036331Z     {
2026-06-21T03:56:28.5036439Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T03:56:28.5036616Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T03:56:28.5036702Z       "requiredStages": [
2026-06-21T03:56:28.5036787Z         "impl",
2026-06-21T03:56:28.5036868Z         "unit"
2026-06-21T03:56:28.5036945Z       ],
2026-06-21T03:56:28.5037031Z       "stages": {
2026-06-21T03:56:28.5037111Z         "doc": {
2026-06-21T03:56:28.5037198Z           "complete": false,
2026-06-21T03:56:28.5037360Z           "evidence": []
2026-06-21T03:56:28.5037440Z         },
2026-06-21T03:56:28.5037594Z         "impl": {
2026-06-21T03:56:28.5037674Z           "complete": true,
2026-06-21T03:56:28.5037750Z           "evidence": [
2026-06-21T03:56:28.5037832Z             {
2026-06-21T03:56:28.5037955Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5038036Z               "line": 466
2026-06-21T03:56:28.5038103Z             },
2026-06-21T03:56:28.5038190Z             {
2026-06-21T03:56:28.5038293Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5038379Z               "line": 26
2026-06-21T03:56:28.5038452Z             }
2026-06-21T03:56:28.5038534Z           ]
2026-06-21T03:56:28.5038613Z         },
2026-06-21T03:56:28.5038689Z         "int": {
2026-06-21T03:56:28.5038782Z           "complete": false,
2026-06-21T03:56:28.5038858Z           "evidence": []
2026-06-21T03:56:28.5039018Z         },
2026-06-21T03:56:28.5039099Z         "unit": {
2026-06-21T03:56:28.5039185Z           "complete": true,
2026-06-21T03:56:28.5039256Z           "evidence": [
2026-06-21T03:56:28.5039342Z             {
2026-06-21T03:56:28.5039442Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5039524Z               "line": 150
2026-06-21T03:56:28.5039604Z             },
2026-06-21T03:56:28.5039680Z             {
2026-06-21T03:56:28.5039782Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5039862Z               "line": 208
2026-06-21T03:56:28.5039942Z             }
2026-06-21T03:56:28.5040023Z           ]
2026-06-21T03:56:28.5040096Z         }
2026-06-21T03:56:28.5040200Z       }
2026-06-21T03:56:28.5040290Z     },
2026-06-21T03:56:28.5040382Z     {
2026-06-21T03:56:28.5040501Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T03:56:28.5049520Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T03:56:28.5049882Z       "requiredStages": [
2026-06-21T03:56:28.5049963Z         "impl",
2026-06-21T03:56:28.5050060Z         "unit",
2026-06-21T03:56:28.5050141Z         "int"
2026-06-21T03:56:28.5050231Z       ],
2026-06-21T03:56:28.5050308Z       "stages": {
2026-06-21T03:56:28.5050389Z         "doc": {
2026-06-21T03:56:28.5050479Z           "complete": false,
2026-06-21T03:56:28.5050560Z           "evidence": []
2026-06-21T03:56:28.5050646Z         },
2026-06-21T03:56:28.5050722Z         "impl": {
2026-06-21T03:56:28.5050803Z           "complete": true,
2026-06-21T03:56:28.5050884Z           "evidence": [
2026-06-21T03:56:28.5050956Z             {
2026-06-21T03:56:28.5051079Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5051160Z               "line": 99
2026-06-21T03:56:28.5051242Z             },
2026-06-21T03:56:28.5051324Z             {
2026-06-21T03:56:28.5051422Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5051504Z               "line": 201
2026-06-21T03:56:28.5051581Z             }
2026-06-21T03:56:28.5051663Z           ]
2026-06-21T03:56:28.5051742Z         },
2026-06-21T03:56:28.5051827Z         "int": {
2026-06-21T03:56:28.5051917Z           "complete": true,
2026-06-21T03:56:28.5052008Z           "evidence": [
2026-06-21T03:56:28.5052092Z             {
2026-06-21T03:56:28.5052230Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5052312Z               "line": 722
2026-06-21T03:56:28.5052388Z             }
2026-06-21T03:56:28.5052473Z           ]
2026-06-21T03:56:28.5052559Z         },
2026-06-21T03:56:28.5052636Z         "unit": {
2026-06-21T03:56:28.5052716Z           "complete": true,
2026-06-21T03:56:28.5052797Z           "evidence": [
2026-06-21T03:56:28.5052879Z             {
2026-06-21T03:56:28.5052984Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5053064Z               "line": 517
2026-06-21T03:56:28.5053145Z             },
2026-06-21T03:56:28.5053223Z             {
2026-06-21T03:56:28.5053332Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5053412Z               "line": 576
2026-06-21T03:56:28.5053494Z             }
2026-06-21T03:56:28.5053576Z           ]
2026-06-21T03:56:28.5053656Z         }
2026-06-21T03:56:28.5053737Z       }
2026-06-21T03:56:28.5053819Z     },
2026-06-21T03:56:28.5053900Z     {
2026-06-21T03:56:28.5054018Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T03:56:28.5055283Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T03:56:28.5055378Z       "requiredStages": [
2026-06-21T03:56:28.5055456Z         "doc",
2026-06-21T03:56:28.5055546Z         "impl",
2026-06-21T03:56:28.5055697Z         "unit"
2026-06-21T03:56:28.5055785Z       ],
2026-06-21T03:56:28.5055875Z       "stages": {
2026-06-21T03:56:28.5056012Z         "doc": {
2026-06-21T03:56:28.5056109Z           "complete": true,
2026-06-21T03:56:28.5056189Z           "evidence": [
2026-06-21T03:56:28.5056275Z             {
2026-06-21T03:56:28.5056380Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5056466Z               "line": 214
2026-06-21T03:56:28.5056556Z             }
2026-06-21T03:56:28.5056637Z           ]
2026-06-21T03:56:28.5056720Z         },
2026-06-21T03:56:28.5056801Z         "impl": {
2026-06-21T03:56:28.5056890Z           "complete": true,
2026-06-21T03:56:28.5056961Z           "evidence": [
2026-06-21T03:56:28.5057049Z             {
2026-06-21T03:56:28.5057153Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5057242Z               "line": 56
2026-06-21T03:56:28.5057327Z             },
2026-06-21T03:56:28.5057404Z             {
2026-06-21T03:56:28.5057531Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5057611Z               "line": 580
2026-06-21T03:56:28.5057703Z             },
2026-06-21T03:56:28.5057784Z             {
2026-06-21T03:56:28.5057907Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5057998Z               "line": 36
2026-06-21T03:56:28.5058075Z             },
2026-06-21T03:56:28.5058156Z             {
2026-06-21T03:56:28.5058265Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5058356Z               "line": 59
2026-06-21T03:56:28.5058441Z             },
2026-06-21T03:56:28.5058518Z             {
2026-06-21T03:56:28.5058638Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5058714Z               "line": 83
2026-06-21T03:56:28.5058799Z             },
2026-06-21T03:56:28.5058875Z             {
2026-06-21T03:56:28.5059057Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5059138Z               "line": 140
2026-06-21T03:56:28.5059223Z             },
2026-06-21T03:56:28.5059305Z             {
2026-06-21T03:56:28.5059409Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5059495Z               "line": 159
2026-06-21T03:56:28.5059572Z             },
2026-06-21T03:56:28.5059654Z             {
2026-06-21T03:56:28.5059771Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5059853Z               "line": 384
2026-06-21T03:56:28.5059935Z             },
2026-06-21T03:56:28.5060016Z             {
2026-06-21T03:56:28.5060123Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5060204Z               "line": 535
2026-06-21T03:56:28.5060291Z             },
2026-06-21T03:56:28.5060377Z             {
2026-06-21T03:56:28.5060481Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5060558Z               "line": 581
2026-06-21T03:56:28.5060639Z             },
2026-06-21T03:56:28.5060715Z             {
2026-06-21T03:56:28.5060829Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5060916Z               "line": 300
2026-06-21T03:56:28.5061001Z             },
2026-06-21T03:56:28.5061072Z             {
2026-06-21T03:56:28.5061177Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:56:28.5061255Z               "line": 42
2026-06-21T03:56:28.5061330Z             }
2026-06-21T03:56:28.5061406Z           ]
2026-06-21T03:56:28.5061482Z         },
2026-06-21T03:56:28.5061565Z         "int": {
2026-06-21T03:56:28.5061644Z           "complete": false,
2026-06-21T03:56:28.5061740Z           "evidence": []
2026-06-21T03:56:28.5061950Z         },
2026-06-21T03:56:28.5062117Z         "unit": {
2026-06-21T03:56:28.5062283Z           "complete": true,
2026-06-21T03:56:28.5062473Z           "evidence": [
2026-06-21T03:56:28.5062657Z             {
2026-06-21T03:56:28.5062853Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5063119Z               "line": 813
2026-06-21T03:56:28.5063420Z             },
2026-06-21T03:56:28.5063578Z             {
2026-06-21T03:56:28.5063783Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5064136Z               "line": 854
2026-06-21T03:56:28.5064316Z             },
2026-06-21T03:56:28.5064460Z             {
2026-06-21T03:56:28.5064655Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5064907Z               "line": 928
2026-06-21T03:56:28.5065081Z             }
2026-06-21T03:56:28.5065241Z           ]
2026-06-21T03:56:28.5065398Z         }
2026-06-21T03:56:28.5065558Z       }
2026-06-21T03:56:28.5065720Z     },
2026-06-21T03:56:28.5065896Z     {
2026-06-21T03:56:28.5066111Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T03:56:28.5071232Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T03:56:28.5075739Z       "requiredStages": [
2026-06-21T03:56:28.5075943Z         "impl",
2026-06-21T03:56:28.5076118Z         "unit",
2026-06-21T03:56:28.5076275Z         "int"
2026-06-21T03:56:28.5076437Z       ],
2026-06-21T03:56:28.5076591Z       "stages": {
2026-06-21T03:56:28.5076766Z         "doc": {
2026-06-21T03:56:28.5076929Z           "complete": false,
2026-06-21T03:56:28.5077142Z           "evidence": []
2026-06-21T03:56:28.5077338Z         },
2026-06-21T03:56:28.5077496Z         "impl": {
2026-06-21T03:56:28.5077667Z           "complete": true,
2026-06-21T03:56:28.5077864Z           "evidence": [
2026-06-21T03:56:28.5078034Z             {
2026-06-21T03:56:28.5078240Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5078496Z               "line": 106
2026-06-21T03:56:28.5078670Z             }
2026-06-21T03:56:28.5078828Z           ]
2026-06-21T03:56:28.5079051Z         },
2026-06-21T03:56:28.5079210Z         "int": {
2026-06-21T03:56:28.5079385Z           "complete": true,
2026-06-21T03:56:28.5079572Z           "evidence": [
2026-06-21T03:56:28.5079748Z             {
2026-06-21T03:56:28.5079953Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T03:56:28.5080201Z               "line": 296
2026-06-21T03:56:28.5080368Z             }
2026-06-21T03:56:28.5080525Z           ]
2026-06-21T03:56:28.5080673Z         },
2026-06-21T03:56:28.5080821Z         "unit": {
2026-06-21T03:56:28.5080998Z           "complete": true,
2026-06-21T03:56:28.5081192Z           "evidence": [
2026-06-21T03:56:28.5081488Z             {
2026-06-21T03:56:28.5081693Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5082041Z               "line": 464
2026-06-21T03:56:28.5082226Z             }
2026-06-21T03:56:28.5082384Z           ]
2026-06-21T03:56:28.5082540Z         }
2026-06-21T03:56:28.5082699Z       }
2026-06-21T03:56:28.5082860Z     },
2026-06-21T03:56:28.5083019Z     {
2026-06-21T03:56:28.5083194Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T03:56:28.5086640Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T03:56:28.5089803Z       "requiredStages": [
2026-06-21T03:56:28.5089988Z         "impl",
2026-06-21T03:56:28.5090160Z         "unit",
2026-06-21T03:56:28.5090323Z         "int"
2026-06-21T03:56:28.5090479Z       ],
2026-06-21T03:56:28.5090628Z       "stages": {
2026-06-21T03:56:28.5090794Z         "doc": {
2026-06-21T03:56:28.5090967Z           "complete": false,
2026-06-21T03:56:28.5091180Z           "evidence": []
2026-06-21T03:56:28.5091362Z         },
2026-06-21T03:56:28.5091524Z         "impl": {
2026-06-21T03:56:28.5091705Z           "complete": true,
2026-06-21T03:56:28.5091894Z           "evidence": [
2026-06-21T03:56:28.5092062Z             {
2026-06-21T03:56:28.5092267Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5092519Z               "line": 123
2026-06-21T03:56:28.5092696Z             },
2026-06-21T03:56:28.5092862Z             {
2026-06-21T03:56:28.5093049Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.5093283Z               "line": 134
2026-06-21T03:56:28.5093458Z             }
2026-06-21T03:56:28.5093607Z           ]
2026-06-21T03:56:28.5093759Z         },
2026-06-21T03:56:28.5093912Z         "int": {
2026-06-21T03:56:28.5094082Z           "complete": true,
2026-06-21T03:56:28.5094272Z           "evidence": [
2026-06-21T03:56:28.5094446Z             {
2026-06-21T03:56:28.5094643Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.5098530Z               "line": 312
2026-06-21T03:56:28.5098731Z             },
2026-06-21T03:56:28.5098902Z             {
2026-06-21T03:56:28.5099183Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.5099435Z               "line": 508
2026-06-21T03:56:28.5099616Z             }
2026-06-21T03:56:28.5099776Z           ]
2026-06-21T03:56:28.5099928Z         },
2026-06-21T03:56:28.5100090Z         "unit": {
2026-06-21T03:56:28.5100258Z           "complete": true,
2026-06-21T03:56:28.5100448Z           "evidence": [
2026-06-21T03:56:28.5100630Z             {
2026-06-21T03:56:28.5100824Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5101082Z               "line": 250
2026-06-21T03:56:28.5101255Z             }
2026-06-21T03:56:28.5101406Z           ]
2026-06-21T03:56:28.5101561Z         }
2026-06-21T03:56:28.5101712Z       }
2026-06-21T03:56:28.5101866Z     },
2026-06-21T03:56:28.5102190Z     {
2026-06-21T03:56:28.5102369Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T03:56:28.5104261Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T03:56:28.5105941Z       "requiredStages": [
2026-06-21T03:56:28.5106128Z         "impl",
2026-06-21T03:56:28.5106290Z         "unit"
2026-06-21T03:56:28.5106438Z       ],
2026-06-21T03:56:28.5106590Z       "stages": {
2026-06-21T03:56:28.5106757Z         "doc": {
2026-06-21T03:56:28.5106929Z           "complete": false,
2026-06-21T03:56:28.5107133Z           "evidence": []
2026-06-21T03:56:28.5107321Z         },
2026-06-21T03:56:28.5107485Z         "impl": {
2026-06-21T03:56:28.5107657Z           "complete": true,
2026-06-21T03:56:28.5107850Z           "evidence": [
2026-06-21T03:56:28.5108022Z             {
2026-06-21T03:56:28.5108227Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5108460Z               "line": 31
2026-06-21T03:56:28.5108643Z             }
2026-06-21T03:56:28.5108789Z           ]
2026-06-21T03:56:28.5109013Z         },
2026-06-21T03:56:28.5109171Z         "int": {
2026-06-21T03:56:28.5109342Z           "complete": false,
2026-06-21T03:56:28.5109535Z           "evidence": []
2026-06-21T03:56:28.5109710Z         },
2026-06-21T03:56:28.5109859Z         "unit": {
2026-06-21T03:56:28.5110033Z           "complete": true,
2026-06-21T03:56:28.5110224Z           "evidence": [
2026-06-21T03:56:28.5110398Z             {
2026-06-21T03:56:28.5110595Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5110843Z               "line": 181
2026-06-21T03:56:28.5111027Z             }
2026-06-21T03:56:28.5111176Z           ]
2026-06-21T03:56:28.5111327Z         }
2026-06-21T03:56:28.5111477Z       }
2026-06-21T03:56:28.5111619Z     },
2026-06-21T03:56:28.5111772Z     {
2026-06-21T03:56:28.5111957Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T03:56:28.5112272Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T03:56:28.5112557Z       "requiredStages": [
2026-06-21T03:56:28.5112736Z         "impl",
2026-06-21T03:56:28.5112891Z         "unit"
2026-06-21T03:56:28.5113038Z       ],
2026-06-21T03:56:28.5113187Z       "stages": {
2026-06-21T03:56:28.5113339Z         "doc": {
2026-06-21T03:56:28.5113511Z           "complete": false,
2026-06-21T03:56:28.5113707Z           "evidence": []
2026-06-21T03:56:28.5113887Z         },
2026-06-21T03:56:28.5114032Z         "impl": {
2026-06-21T03:56:28.5114192Z           "complete": true,
2026-06-21T03:56:28.5114389Z           "evidence": [
2026-06-21T03:56:28.5114565Z             {
2026-06-21T03:56:28.5114755Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5114991Z               "line": 49
2026-06-21T03:56:28.5115174Z             },
2026-06-21T03:56:28.5115331Z             {
2026-06-21T03:56:28.5115519Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5115753Z               "line": 81
2026-06-21T03:56:28.5115930Z             }
2026-06-21T03:56:28.5116082Z           ]
2026-06-21T03:56:28.5116230Z         },
2026-06-21T03:56:28.5116383Z         "int": {
2026-06-21T03:56:28.5116560Z           "complete": false,
2026-06-21T03:56:28.5116759Z           "evidence": []
2026-06-21T03:56:28.5116936Z         },
2026-06-21T03:56:28.5117079Z         "unit": {
2026-06-21T03:56:28.5117251Z           "complete": true,
2026-06-21T03:56:28.5117441Z           "evidence": [
2026-06-21T03:56:28.5117613Z             {
2026-06-21T03:56:28.5117919Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5118160Z               "line": 156
2026-06-21T03:56:28.5118439Z             },
2026-06-21T03:56:28.5118592Z             {
2026-06-21T03:56:28.5118773Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5119068Z               "line": 173
2026-06-21T03:56:28.5119236Z             },
2026-06-21T03:56:28.5119388Z             {
2026-06-21T03:56:28.5119569Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5119794Z               "line": 196
2026-06-21T03:56:28.5119970Z             }
2026-06-21T03:56:28.5120123Z           ]
2026-06-21T03:56:28.5120275Z         }
2026-06-21T03:56:28.5120419Z       }
2026-06-21T03:56:28.5120570Z     },
2026-06-21T03:56:28.5120717Z     {
2026-06-21T03:56:28.5120896Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T03:56:28.5121207Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T03:56:28.5121512Z       "requiredStages": [
2026-06-21T03:56:28.5121703Z         "impl",
2026-06-21T03:56:28.5121869Z         "unit"
2026-06-21T03:56:28.5122037Z       ],
2026-06-21T03:56:28.5122202Z       "stages": {
2026-06-21T03:56:28.5122366Z         "doc": {
2026-06-21T03:56:28.5122527Z           "complete": false,
2026-06-21T03:56:28.5122723Z           "evidence": []
2026-06-21T03:56:28.5122894Z         },
2026-06-21T03:56:28.5123048Z         "impl": {
2026-06-21T03:56:28.5123219Z           "complete": true,
2026-06-21T03:56:28.5123395Z           "evidence": [
2026-06-21T03:56:28.5123570Z             {
2026-06-21T03:56:28.5123761Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5124000Z               "line": 120
2026-06-21T03:56:28.5124171Z             }
2026-06-21T03:56:28.5124328Z           ]
2026-06-21T03:56:28.5124481Z         },
2026-06-21T03:56:28.5124634Z         "int": {
2026-06-21T03:56:28.5124805Z           "complete": false,
2026-06-21T03:56:28.5124996Z           "evidence": []
2026-06-21T03:56:28.5125168Z         },
2026-06-21T03:56:28.5125320Z         "unit": {
2026-06-21T03:56:28.5125492Z           "complete": true,
2026-06-21T03:56:28.5125692Z           "evidence": [
2026-06-21T03:56:28.5125858Z             {
2026-06-21T03:56:28.5126051Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5126313Z               "line": 212
2026-06-21T03:56:28.5126500Z             },
2026-06-21T03:56:28.5126652Z             {
2026-06-21T03:56:28.5126844Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5127071Z               "line": 221
2026-06-21T03:56:28.5127239Z             },
2026-06-21T03:56:28.5127400Z             {
2026-06-21T03:56:28.5127582Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5127812Z               "line": 229
2026-06-21T03:56:28.5127977Z             },
2026-06-21T03:56:28.5128131Z             {
2026-06-21T03:56:28.5128312Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5128549Z               "line": 239
2026-06-21T03:56:28.5128715Z             },
2026-06-21T03:56:28.5128866Z             {
2026-06-21T03:56:28.5129134Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T03:56:28.5129372Z               "line": 249
2026-06-21T03:56:28.5129547Z             }
2026-06-21T03:56:28.5129697Z           ]
2026-06-21T03:56:28.5129848Z         }
2026-06-21T03:56:28.5130006Z       }
2026-06-21T03:56:28.5130158Z     },
2026-06-21T03:56:28.5130306Z     {
2026-06-21T03:56:28.5130477Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T03:56:28.5130768Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T03:56:28.5131046Z       "requiredStages": [
2026-06-21T03:56:28.5131230Z         "impl",
2026-06-21T03:56:28.5131396Z         "unit"
2026-06-21T03:56:28.5131542Z       ],
2026-06-21T03:56:28.5131695Z       "stages": {
2026-06-21T03:56:28.5131871Z         "doc": {
2026-06-21T03:56:28.5132033Z           "complete": false,
2026-06-21T03:56:28.5132344Z           "evidence": []
2026-06-21T03:56:28.5132520Z         },
2026-06-21T03:56:28.5132677Z         "impl": {
2026-06-21T03:56:28.5132950Z           "complete": true,
2026-06-21T03:56:28.5133140Z           "evidence": [
2026-06-21T03:56:28.5133316Z             {
2026-06-21T03:56:28.5133498Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5133726Z               "line": 14
2026-06-21T03:56:28.5133904Z             },
2026-06-21T03:56:28.5134059Z             {
2026-06-21T03:56:28.5134241Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5134469Z               "line": 63
2026-06-21T03:56:28.5134646Z             }
2026-06-21T03:56:28.5134794Z           ]
2026-06-21T03:56:28.5134937Z         },
2026-06-21T03:56:28.5135089Z         "int": {
2026-06-21T03:56:28.5135260Z           "complete": false,
2026-06-21T03:56:28.5135457Z           "evidence": []
2026-06-21T03:56:28.5135618Z         },
2026-06-21T03:56:28.5135781Z         "unit": {
2026-06-21T03:56:28.5135957Z           "complete": true,
2026-06-21T03:56:28.5136139Z           "evidence": [
2026-06-21T03:56:28.5136313Z             {
2026-06-21T03:56:28.5136508Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5136725Z               "line": 164
2026-06-21T03:56:28.5136907Z             },
2026-06-21T03:56:28.5137069Z             {
2026-06-21T03:56:28.5137250Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5137479Z               "line": 198
2026-06-21T03:56:28.5137656Z             },
2026-06-21T03:56:28.5137818Z             {
2026-06-21T03:56:28.5137995Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5138228Z               "line": 220
2026-06-21T03:56:28.5138400Z             }
2026-06-21T03:56:28.5138561Z           ]
2026-06-21T03:56:28.5138710Z         }
2026-06-21T03:56:28.5138862Z       }
2026-06-21T03:56:28.5139100Z     },
2026-06-21T03:56:28.5139242Z     {
2026-06-21T03:56:28.5139417Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T03:56:28.5140862Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T03:56:28.5142087Z       "requiredStages": [],
2026-06-21T03:56:28.5142275Z       "stages": {
2026-06-21T03:56:28.5142446Z         "doc": {
2026-06-21T03:56:28.5142613Z           "complete": true,
2026-06-21T03:56:28.5142809Z           "evidence": [
2026-06-21T03:56:28.5142985Z             {
2026-06-21T03:56:28.5143171Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5143390Z               "line": 165
2026-06-21T03:56:28.5143562Z             }
2026-06-21T03:56:28.5143714Z           ]
2026-06-21T03:56:28.5143857Z         },
2026-06-21T03:56:28.5144024Z         "impl": {
2026-06-21T03:56:28.5144196Z           "complete": false,
2026-06-21T03:56:28.5144392Z           "evidence": []
2026-06-21T03:56:28.5144595Z         },
2026-06-21T03:56:28.5144748Z         "int": {
2026-06-21T03:56:28.5144914Z           "complete": false,
2026-06-21T03:56:28.5145111Z           "evidence": []
2026-06-21T03:56:28.5145286Z         },
2026-06-21T03:56:28.5145445Z         "unit": {
2026-06-21T03:56:28.5145615Z           "complete": false,
2026-06-21T03:56:28.5145806Z           "evidence": []
2026-06-21T03:56:28.5146021Z         }
2026-06-21T03:56:28.5146184Z       }
2026-06-21T03:56:28.5146336Z     },
2026-06-21T03:56:28.5146483Z     {
2026-06-21T03:56:28.5146661Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T03:56:28.5147036Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T03:56:28.5147397Z       "requiredStages": [
2026-06-21T03:56:28.5147581Z         "impl",
2026-06-21T03:56:28.5147858Z         "unit"
2026-06-21T03:56:28.5148020Z       ],
2026-06-21T03:56:28.5148172Z       "stages": {
2026-06-21T03:56:28.5148435Z         "doc": {
2026-06-21T03:56:28.5148608Z           "complete": false,
2026-06-21T03:56:28.5148792Z           "evidence": []
2026-06-21T03:56:28.5149035Z         },
2026-06-21T03:56:28.5149185Z         "impl": {
2026-06-21T03:56:28.5149345Z           "complete": true,
2026-06-21T03:56:28.5149538Z           "evidence": [
2026-06-21T03:56:28.5149722Z             {
2026-06-21T03:56:28.5149912Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5150144Z               "line": 76
2026-06-21T03:56:28.5150315Z             },
2026-06-21T03:56:28.5150468Z             {
2026-06-21T03:56:28.5150653Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5150887Z               "line": 167
2026-06-21T03:56:28.5151059Z             },
2026-06-21T03:56:28.5151207Z             {
2026-06-21T03:56:28.5151392Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5151631Z               "line": 233
2026-06-21T03:56:28.5151799Z             },
2026-06-21T03:56:28.5151955Z             {
2026-06-21T03:56:28.5152142Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5152374Z               "line": 272
2026-06-21T03:56:28.5152553Z             }
2026-06-21T03:56:28.5152696Z           ]
2026-06-21T03:56:28.5152845Z         },
2026-06-21T03:56:28.5152996Z         "int": {
2026-06-21T03:56:28.5153164Z           "complete": false,
2026-06-21T03:56:28.5153349Z           "evidence": []
2026-06-21T03:56:28.5153531Z         },
2026-06-21T03:56:28.5153679Z         "unit": {
2026-06-21T03:56:28.5153850Z           "complete": true,
2026-06-21T03:56:28.5154041Z           "evidence": [
2026-06-21T03:56:28.5154217Z             {
2026-06-21T03:56:28.5154403Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5154628Z               "line": 321
2026-06-21T03:56:28.5154808Z             },
2026-06-21T03:56:28.5154972Z             {
2026-06-21T03:56:28.5155165Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5155400Z               "line": 329
2026-06-21T03:56:28.5155575Z             },
2026-06-21T03:56:28.5155723Z             {
2026-06-21T03:56:28.5155909Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5156142Z               "line": 356
2026-06-21T03:56:28.5156319Z             },
2026-06-21T03:56:28.5156485Z             {
2026-06-21T03:56:28.5156672Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5156906Z               "line": 395
2026-06-21T03:56:28.5157087Z             },
2026-06-21T03:56:28.5157245Z             {
2026-06-21T03:56:28.5157434Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5157661Z               "line": 406
2026-06-21T03:56:28.5157837Z             },
2026-06-21T03:56:28.5157994Z             {
2026-06-21T03:56:28.5158175Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5158418Z               "line": 418
2026-06-21T03:56:28.5158595Z             },
2026-06-21T03:56:28.5158757Z             {
2026-06-21T03:56:28.5159018Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T03:56:28.5159257Z               "line": 442
2026-06-21T03:56:28.5159435Z             }
2026-06-21T03:56:28.5159590Z           ]
2026-06-21T03:56:28.5159745Z         }
2026-06-21T03:56:28.5159905Z       }
2026-06-21T03:56:28.5160050Z     },
2026-06-21T03:56:28.5160197Z     {
2026-06-21T03:56:28.5160362Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T03:56:28.5160637Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T03:56:28.5160908Z       "requiredStages": [
2026-06-21T03:56:28.5161086Z         "impl",
2026-06-21T03:56:28.5161247Z         "int"
2026-06-21T03:56:28.5161410Z       ],
2026-06-21T03:56:28.5161576Z       "stages": {
2026-06-21T03:56:28.5161739Z         "doc": {
2026-06-21T03:56:28.5161910Z           "complete": false,
2026-06-21T03:56:28.5162101Z           "evidence": []
2026-06-21T03:56:28.5162411Z         },
2026-06-21T03:56:28.5162563Z         "impl": {
2026-06-21T03:56:28.5162829Z           "complete": true,
2026-06-21T03:56:28.5163020Z           "evidence": [
2026-06-21T03:56:28.5163189Z             {
2026-06-21T03:56:28.5163381Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5163614Z               "line": 22
2026-06-21T03:56:28.5163780Z             }
2026-06-21T03:56:28.5163929Z           ]
2026-06-21T03:56:28.5164076Z         },
2026-06-21T03:56:28.5164224Z         "int": {
2026-06-21T03:56:28.5164396Z           "complete": true,
2026-06-21T03:56:28.5164583Z           "evidence": [
2026-06-21T03:56:28.5167974Z             {
2026-06-21T03:56:28.5168193Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T03:56:28.5168435Z               "line": 18
2026-06-21T03:56:28.5168615Z             }
2026-06-21T03:56:28.5168779Z           ]
2026-06-21T03:56:28.5168926Z         },
2026-06-21T03:56:28.5169164Z         "unit": {
2026-06-21T03:56:28.5169351Z           "complete": false,
2026-06-21T03:56:28.5169546Z           "evidence": []
2026-06-21T03:56:28.5169728Z         }
2026-06-21T03:56:28.5169875Z       }
2026-06-21T03:56:28.5170023Z     },
2026-06-21T03:56:28.5170175Z     {
2026-06-21T03:56:28.5170358Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T03:56:28.5170691Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T03:56:28.5170999Z       "requiredStages": [
2026-06-21T03:56:28.5171182Z         "impl",
2026-06-21T03:56:28.5171350Z         "unit"
2026-06-21T03:56:28.5171506Z       ],
2026-06-21T03:56:28.5171665Z       "stages": {
2026-06-21T03:56:28.5171826Z         "doc": {
2026-06-21T03:56:28.5171999Z           "complete": false,
2026-06-21T03:56:28.5172189Z           "evidence": []
2026-06-21T03:56:28.5172356Z         },
2026-06-21T03:56:28.5172499Z         "impl": {
2026-06-21T03:56:28.5172661Z           "complete": true,
2026-06-21T03:56:28.5172852Z           "evidence": [
2026-06-21T03:56:28.5173032Z             {
2026-06-21T03:56:28.5173225Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5173479Z               "line": 465
2026-06-21T03:56:28.5173655Z             },
2026-06-21T03:56:28.5173811Z             {
2026-06-21T03:56:28.5173993Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5174231Z               "line": 27
2026-06-21T03:56:28.5174402Z             }
2026-06-21T03:56:28.5174556Z           ]
2026-06-21T03:56:28.5174712Z         },
2026-06-21T03:56:28.5174871Z         "int": {
2026-06-21T03:56:28.5175037Z           "complete": false,
2026-06-21T03:56:28.5175228Z           "evidence": []
2026-06-21T03:56:28.5175404Z         },
2026-06-21T03:56:28.5175556Z         "unit": {
2026-06-21T03:56:28.5175719Z           "complete": true,
2026-06-21T03:56:28.5175914Z           "evidence": [
2026-06-21T03:56:28.5176082Z             {
2026-06-21T03:56:28.5176276Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5176524Z               "line": 990
2026-06-21T03:56:28.5176695Z             },
2026-06-21T03:56:28.5176853Z             {
2026-06-21T03:56:28.5177039Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5177258Z               "line": 181
2026-06-21T03:56:28.5177420Z             }
2026-06-21T03:56:28.5177567Z           ]
2026-06-21T03:56:28.5177717Z         }
2026-06-21T03:56:28.5177859Z       }
2026-06-21T03:56:28.5178008Z     },
2026-06-21T03:56:28.5178149Z     {
2026-06-21T03:56:28.5178322Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T03:56:28.5178620Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T03:56:28.5178909Z       "requiredStages": [
2026-06-21T03:56:28.5179171Z         "impl",
2026-06-21T03:56:28.5179334Z         "unit"
2026-06-21T03:56:28.5179491Z       ],
2026-06-21T03:56:28.5179644Z       "stages": {
2026-06-21T03:56:28.5179805Z         "doc": {
2026-06-21T03:56:28.5179963Z           "complete": false,
2026-06-21T03:56:28.5180302Z           "evidence": []
2026-06-21T03:56:28.5180468Z         },
2026-06-21T03:56:28.5180716Z         "impl": {
2026-06-21T03:56:28.5180885Z           "complete": true,
2026-06-21T03:56:28.5181064Z           "evidence": [
2026-06-21T03:56:28.5181237Z             {
2026-06-21T03:56:28.5181430Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.5181681Z               "line": 73
2026-06-21T03:56:28.5181858Z             },
2026-06-21T03:56:28.5182010Z             {
2026-06-21T03:56:28.5182197Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.5182439Z               "line": 972
2026-06-21T03:56:28.5182616Z             },
2026-06-21T03:56:28.5182763Z             {
2026-06-21T03:56:28.5182944Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5183030Z               "line": 20
2026-06-21T03:56:28.5183112Z             },
2026-06-21T03:56:28.5183193Z             {
2026-06-21T03:56:28.5183312Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5183393Z               "line": 100
2026-06-21T03:56:28.5183479Z             },
2026-06-21T03:56:28.5183560Z             {
2026-06-21T03:56:28.5183664Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.5183757Z               "line": 603
2026-06-21T03:56:28.5183828Z             },
2026-06-21T03:56:28.5183898Z             {
2026-06-21T03:56:28.5184016Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:56:28.5184097Z               "line": 68
2026-06-21T03:56:28.5184178Z             },
2026-06-21T03:56:28.5184248Z             {
2026-06-21T03:56:28.5184361Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:56:28.5184438Z               "line": 80
2026-06-21T03:56:28.5184516Z             }
2026-06-21T03:56:28.5184595Z           ]
2026-06-21T03:56:28.5184676Z         },
2026-06-21T03:56:28.5184759Z         "int": {
2026-06-21T03:56:28.5184839Z           "complete": true,
2026-06-21T03:56:28.5184924Z           "evidence": [
2026-06-21T03:56:28.5185000Z             {
2026-06-21T03:56:28.5185107Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T03:56:28.5185188Z               "line": 44
2026-06-21T03:56:28.5185267Z             }
2026-06-21T03:56:28.5185350Z           ]
2026-06-21T03:56:28.5185426Z         },
2026-06-21T03:56:28.5185506Z         "unit": {
2026-06-21T03:56:28.5185592Z           "complete": true,
2026-06-21T03:56:28.5185674Z           "evidence": [
2026-06-21T03:56:28.5185760Z             {
2026-06-21T03:56:28.5185859Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.5185950Z               "line": 1181
2026-06-21T03:56:28.5186032Z             },
2026-06-21T03:56:28.5186103Z             {
2026-06-21T03:56:28.5186216Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.5186299Z               "line": 1197
2026-06-21T03:56:28.5186381Z             },
2026-06-21T03:56:28.5186459Z             {
2026-06-21T03:56:28.5186580Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5186657Z               "line": 2246
2026-06-21T03:56:28.5186742Z             },
2026-06-21T03:56:28.5186817Z             {
2026-06-21T03:56:28.5186921Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5187013Z               "line": 152
2026-06-21T03:56:28.5187085Z             },
2026-06-21T03:56:28.5187164Z             {
2026-06-21T03:56:28.5187265Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5187351Z               "line": 175
2026-06-21T03:56:28.5187418Z             },
2026-06-21T03:56:28.5187498Z             {
2026-06-21T03:56:28.5187609Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5187689Z               "line": 186
2026-06-21T03:56:28.5187770Z             },
2026-06-21T03:56:28.5187846Z             {
2026-06-21T03:56:28.5187948Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5188113Z               "line": 202
2026-06-21T03:56:28.5188194Z             },
2026-06-21T03:56:28.5188272Z             {
2026-06-21T03:56:28.5188447Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T03:56:28.5188524Z               "line": 216
2026-06-21T03:56:28.5188606Z             },
2026-06-21T03:56:28.5188681Z             {
2026-06-21T03:56:28.5188795Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T03:56:28.5188877Z               "line": 137
2026-06-21T03:56:28.5189024Z             },
2026-06-21T03:56:28.5189095Z             {
2026-06-21T03:56:28.5189195Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5189285Z               "line": 8152
2026-06-21T03:56:28.5189364Z             },
2026-06-21T03:56:28.5189445Z             {
2026-06-21T03:56:28.5189565Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T03:56:28.5189647Z               "line": 30
2026-06-21T03:56:28.5189722Z             },
2026-06-21T03:56:28.5189813Z             {
2026-06-21T03:56:28.5189956Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T03:56:28.5190046Z               "line": 73
2026-06-21T03:56:28.5190132Z             }
2026-06-21T03:56:28.5190209Z           ]
2026-06-21T03:56:28.5190285Z         }
2026-06-21T03:56:28.5190361Z       }
2026-06-21T03:56:28.5190432Z     },
2026-06-21T03:56:28.5190514Z     {
2026-06-21T03:56:28.5190633Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T03:56:28.5194733Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T03:56:28.5194855Z       "requiredStages": [
2026-06-21T03:56:28.5194931Z         "impl",
2026-06-21T03:56:28.5195003Z         "unit",
2026-06-21T03:56:28.5195090Z         "int"
2026-06-21T03:56:28.5195169Z       ],
2026-06-21T03:56:28.5195246Z       "stages": {
2026-06-21T03:56:28.5195319Z         "doc": {
2026-06-21T03:56:28.5195409Z           "complete": false,
2026-06-21T03:56:28.5195484Z           "evidence": []
2026-06-21T03:56:28.5195565Z         },
2026-06-21T03:56:28.5195643Z         "impl": {
2026-06-21T03:56:28.5195723Z           "complete": true,
2026-06-21T03:56:28.5195809Z           "evidence": [
2026-06-21T03:56:28.5195890Z             {
2026-06-21T03:56:28.5196010Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5196086Z               "line": 510
2026-06-21T03:56:28.5196162Z             },
2026-06-21T03:56:28.5196244Z             {
2026-06-21T03:56:28.5196362Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5196438Z               "line": 704
2026-06-21T03:56:28.5196524Z             }
2026-06-21T03:56:28.5196592Z           ]
2026-06-21T03:56:28.5196672Z         },
2026-06-21T03:56:28.5196815Z         "int": {
2026-06-21T03:56:28.5197011Z           "complete": true,
2026-06-21T03:56:28.5197096Z           "evidence": [
2026-06-21T03:56:28.5197179Z             {
2026-06-21T03:56:28.5197471Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5197553Z               "line": 1119
2026-06-21T03:56:28.5197636Z             },
2026-06-21T03:56:28.5197715Z             {
2026-06-21T03:56:28.5197835Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T03:56:28.5197921Z               "line": 312
2026-06-21T03:56:28.5198002Z             }
2026-06-21T03:56:28.5198082Z           ]
2026-06-21T03:56:28.5198159Z         },
2026-06-21T03:56:28.5198245Z         "unit": {
2026-06-21T03:56:28.5198331Z           "complete": true,
2026-06-21T03:56:28.5198416Z           "evidence": [
2026-06-21T03:56:28.5198498Z             {
2026-06-21T03:56:28.5198607Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5198683Z               "line": 821
2026-06-21T03:56:28.5198750Z             }
2026-06-21T03:56:28.5198842Z           ]
2026-06-21T03:56:28.5198912Z         }
2026-06-21T03:56:28.5199055Z       }
2026-06-21T03:56:28.5199133Z     },
2026-06-21T03:56:28.5199208Z     {
2026-06-21T03:56:28.5199308Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T03:56:28.5199537Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T03:56:28.5199627Z       "requiredStages": [
2026-06-21T03:56:28.5199707Z         "impl",
2026-06-21T03:56:28.5199789Z         "unit"
2026-06-21T03:56:28.5199859Z       ],
2026-06-21T03:56:28.5199929Z       "stages": {
2026-06-21T03:56:28.5200014Z         "doc": {
2026-06-21T03:56:28.5200096Z           "complete": true,
2026-06-21T03:56:28.5200168Z           "evidence": [
2026-06-21T03:56:28.5200249Z             {
2026-06-21T03:56:28.5200348Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5200435Z               "line": 133
2026-06-21T03:56:28.5200516Z             }
2026-06-21T03:56:28.5200596Z           ]
2026-06-21T03:56:28.5200677Z         },
2026-06-21T03:56:28.5200760Z         "impl": {
2026-06-21T03:56:28.5200836Z           "complete": true,
2026-06-21T03:56:28.5200968Z           "evidence": [
2026-06-21T03:56:28.5201051Z             {
2026-06-21T03:56:28.5201169Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5201264Z               "line": 65
2026-06-21T03:56:28.5201346Z             },
2026-06-21T03:56:28.5201418Z             {
2026-06-21T03:56:28.5201522Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5201608Z               "line": 17
2026-06-21T03:56:28.5201685Z             },
2026-06-21T03:56:28.5201765Z             {
2026-06-21T03:56:28.5201889Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.5201971Z               "line": 146
2026-06-21T03:56:28.5202057Z             },
2026-06-21T03:56:28.5202136Z             {
2026-06-21T03:56:28.5202251Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5202329Z               "line": 310
2026-06-21T03:56:28.5202409Z             },
2026-06-21T03:56:28.5202480Z             {
2026-06-21T03:56:28.5202588Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5202675Z               "line": 441
2026-06-21T03:56:28.5202754Z             },
2026-06-21T03:56:28.5202840Z             {
2026-06-21T03:56:28.5202939Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.5203021Z               "line": 32
2026-06-21T03:56:28.5203102Z             },
2026-06-21T03:56:28.5203187Z             {
2026-06-21T03:56:28.5203293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5203383Z               "line": 1283
2026-06-21T03:56:28.5203459Z             },
2026-06-21T03:56:28.5203539Z             {
2026-06-21T03:56:28.5203632Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5203717Z               "line": 6161
2026-06-21T03:56:28.5203797Z             },
2026-06-21T03:56:28.5203874Z             {
2026-06-21T03:56:28.5204094Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5204174Z               "line": 6443
2026-06-21T03:56:28.5204351Z             }
2026-06-21T03:56:28.5204432Z           ]
2026-06-21T03:56:28.5204513Z         },
2026-06-21T03:56:28.5204595Z         "int": {
2026-06-21T03:56:28.5204680Z           "complete": false,
2026-06-21T03:56:28.5204766Z           "evidence": []
2026-06-21T03:56:28.5204838Z         },
2026-06-21T03:56:28.5204919Z         "unit": {
2026-06-21T03:56:28.5205000Z           "complete": true,
2026-06-21T03:56:28.5205079Z           "evidence": [
2026-06-21T03:56:28.5205151Z             {
2026-06-21T03:56:28.5205255Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5205349Z               "line": 94
2026-06-21T03:56:28.5205420Z             },
2026-06-21T03:56:28.5205496Z             {
2026-06-21T03:56:28.5205602Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5205683Z               "line": 111
2026-06-21T03:56:28.5205768Z             },
2026-06-21T03:56:28.5205855Z             {
2026-06-21T03:56:28.5205959Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5206049Z               "line": 124
2026-06-21T03:56:28.5206135Z             },
2026-06-21T03:56:28.5206217Z             {
2026-06-21T03:56:28.5206322Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5206407Z               "line": 134
2026-06-21T03:56:28.5206489Z             },
2026-06-21T03:56:28.5206565Z             {
2026-06-21T03:56:28.5206665Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5206746Z               "line": 144
2026-06-21T03:56:28.5206823Z             },
2026-06-21T03:56:28.5206909Z             {
2026-06-21T03:56:28.5207008Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T03:56:28.5207089Z               "line": 156
2026-06-21T03:56:28.5207176Z             },
2026-06-21T03:56:28.5207251Z             {
2026-06-21T03:56:28.5207380Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5207467Z               "line": 746
2026-06-21T03:56:28.5207547Z             },
2026-06-21T03:56:28.5207638Z             {
2026-06-21T03:56:28.5207749Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.5207839Z               "line": 309
2026-06-21T03:56:28.5207918Z             }
2026-06-21T03:56:28.5207999Z           ]
2026-06-21T03:56:28.5208075Z         }
2026-06-21T03:56:28.5208162Z       }
2026-06-21T03:56:28.5208243Z     },
2026-06-21T03:56:28.5208323Z     {
2026-06-21T03:56:28.5208433Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T03:56:28.5208562Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T03:56:28.5208657Z       "requiredStages": [
2026-06-21T03:56:28.5208734Z         "impl",
2026-06-21T03:56:28.5208815Z         "unit"
2026-06-21T03:56:28.5208896Z       ],
2026-06-21T03:56:28.5209029Z       "stages": {
2026-06-21T03:56:28.5209115Z         "doc": {
2026-06-21T03:56:28.5209201Z           "complete": false,
2026-06-21T03:56:28.5209301Z           "evidence": []
2026-06-21T03:56:28.5209378Z         },
2026-06-21T03:56:28.5209463Z         "impl": {
2026-06-21T03:56:28.5209549Z           "complete": true,
2026-06-21T03:56:28.5209639Z           "evidence": [
2026-06-21T03:56:28.5209721Z             {
2026-06-21T03:56:28.5209820Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5209906Z               "line": 128
2026-06-21T03:56:28.5209983Z             }
2026-06-21T03:56:28.5210070Z           ]
2026-06-21T03:56:28.5210144Z         },
2026-06-21T03:56:28.5210225Z         "int": {
2026-06-21T03:56:28.5210320Z           "complete": false,
2026-06-21T03:56:28.5210406Z           "evidence": []
2026-06-21T03:56:28.5210489Z         },
2026-06-21T03:56:28.5210565Z         "unit": {
2026-06-21T03:56:28.5210656Z           "complete": true,
2026-06-21T03:56:28.5210738Z           "evidence": [
2026-06-21T03:56:28.5210818Z             {
2026-06-21T03:56:28.5210928Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5211114Z               "line": 205
2026-06-21T03:56:28.5211190Z             }
2026-06-21T03:56:28.5211367Z           ]
2026-06-21T03:56:28.5211443Z         }
2026-06-21T03:56:28.5211524Z       }
2026-06-21T03:56:28.5211601Z     },
2026-06-21T03:56:28.5211686Z     {
2026-06-21T03:56:28.5211786Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T03:56:28.5211940Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T03:56:28.5212024Z       "requiredStages": [
2026-06-21T03:56:28.5212101Z         "impl",
2026-06-21T03:56:28.5212173Z         "unit"
2026-06-21T03:56:28.5212255Z       ],
2026-06-21T03:56:28.5212339Z       "stages": {
2026-06-21T03:56:28.5212406Z         "doc": {
2026-06-21T03:56:28.5212502Z           "complete": false,
2026-06-21T03:56:28.5212584Z           "evidence": []
2026-06-21T03:56:28.5212668Z         },
2026-06-21T03:56:28.5212740Z         "impl": {
2026-06-21T03:56:28.5212831Z           "complete": true,
2026-06-21T03:56:28.5212928Z           "evidence": [
2026-06-21T03:56:28.5213007Z             {
2026-06-21T03:56:28.5213111Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5213201Z               "line": 367
2026-06-21T03:56:28.5213287Z             },
2026-06-21T03:56:28.5213366Z             {
2026-06-21T03:56:28.5213475Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5213562Z               "line": 378
2026-06-21T03:56:28.5213643Z             },
2026-06-21T03:56:28.5213723Z             {
2026-06-21T03:56:28.5213824Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5213910Z               "line": 396
2026-06-21T03:56:28.5213986Z             }
2026-06-21T03:56:28.5214072Z           ]
2026-06-21T03:56:28.5214153Z         },
2026-06-21T03:56:28.5214225Z         "int": {
2026-06-21T03:56:28.5214315Z           "complete": false,
2026-06-21T03:56:28.5214396Z           "evidence": []
2026-06-21T03:56:28.5214472Z         },
2026-06-21T03:56:28.5214554Z         "unit": {
2026-06-21T03:56:28.5214649Z           "complete": true,
2026-06-21T03:56:28.5214725Z           "evidence": [
2026-06-21T03:56:28.5214802Z             {
2026-06-21T03:56:28.5214906Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5214992Z               "line": 420
2026-06-21T03:56:28.5215073Z             },
2026-06-21T03:56:28.5215151Z             {
2026-06-21T03:56:28.5215254Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5215350Z               "line": 441
2026-06-21T03:56:28.5215432Z             },
2026-06-21T03:56:28.5215512Z             {
2026-06-21T03:56:28.5215616Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5215701Z               "line": 811
2026-06-21T03:56:28.5215783Z             },
2026-06-21T03:56:28.5215853Z             {
2026-06-21T03:56:28.5215961Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5216047Z               "line": 822
2026-06-21T03:56:28.5216133Z             },
2026-06-21T03:56:28.5216215Z             {
2026-06-21T03:56:28.5216318Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5216410Z               "line": 835
2026-06-21T03:56:28.5216487Z             }
2026-06-21T03:56:28.5216567Z           ]
2026-06-21T03:56:28.5216647Z         }
2026-06-21T03:56:28.5216730Z       }
2026-06-21T03:56:28.5216801Z     },
2026-06-21T03:56:28.5216882Z     {
2026-06-21T03:56:28.5217001Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T03:56:28.5224447Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T03:56:28.5224767Z       "requiredStages": [
2026-06-21T03:56:28.5224852Z         "impl",
2026-06-21T03:56:28.5224946Z         "unit",
2026-06-21T03:56:28.5225023Z         "int"
2026-06-21T03:56:28.5225105Z       ],
2026-06-21T03:56:28.5225195Z       "stages": {
2026-06-21T03:56:28.5225276Z         "doc": {
2026-06-21T03:56:28.5225357Z           "complete": false,
2026-06-21T03:56:28.5225443Z           "evidence": []
2026-06-21T03:56:28.5225523Z         },
2026-06-21T03:56:28.5225609Z         "impl": {
2026-06-21T03:56:28.5225701Z           "complete": true,
2026-06-21T03:56:28.5225781Z           "evidence": [
2026-06-21T03:56:28.5225862Z             {
2026-06-21T03:56:28.5225978Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5226059Z               "line": 300
2026-06-21T03:56:28.5226143Z             },
2026-06-21T03:56:28.5226219Z             {
2026-06-21T03:56:28.5226338Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5226418Z               "line": 714
2026-06-21T03:56:28.5226503Z             },
2026-06-21T03:56:28.5226578Z             {
2026-06-21T03:56:28.5226698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5226784Z               "line": 978
2026-06-21T03:56:28.5226865Z             }
2026-06-21T03:56:28.5226950Z           ]
2026-06-21T03:56:28.5227028Z         },
2026-06-21T03:56:28.5227109Z         "int": {
2026-06-21T03:56:28.5227189Z           "complete": true,
2026-06-21T03:56:28.5227270Z           "evidence": [
2026-06-21T03:56:28.5227337Z             {
2026-06-21T03:56:28.5227480Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5227561Z               "line": 256
2026-06-21T03:56:28.5227643Z             },
2026-06-21T03:56:28.5227723Z             {
2026-06-21T03:56:28.5227847Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5227929Z               "line": 382
2026-06-21T03:56:28.5228009Z             }
2026-06-21T03:56:28.5228076Z           ]
2026-06-21T03:56:28.5228162Z         },
2026-06-21T03:56:28.5228320Z         "unit": {
2026-06-21T03:56:28.5228409Z           "complete": true,
2026-06-21T03:56:28.5228490Z           "evidence": [
2026-06-21T03:56:28.5228663Z             {
2026-06-21T03:56:28.5228772Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5228854Z               "line": 2274
2026-06-21T03:56:28.5229034Z             },
2026-06-21T03:56:28.5229109Z             {
2026-06-21T03:56:28.5229220Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5229296Z               "line": 2332
2026-06-21T03:56:28.5229382Z             }
2026-06-21T03:56:28.5229467Z           ]
2026-06-21T03:56:28.5229539Z         }
2026-06-21T03:56:28.5229621Z       }
2026-06-21T03:56:28.5229692Z     },
2026-06-21T03:56:28.5229772Z     {
2026-06-21T03:56:28.5229888Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T03:56:28.5237053Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T03:56:28.5237196Z       "requiredStages": [
2026-06-21T03:56:28.5237283Z         "doc",
2026-06-21T03:56:28.5237363Z         "impl",
2026-06-21T03:56:28.5237448Z         "unit",
2026-06-21T03:56:28.5237530Z         "int"
2026-06-21T03:56:28.5237607Z       ],
2026-06-21T03:56:28.5237692Z       "stages": {
2026-06-21T03:56:28.5237759Z         "doc": {
2026-06-21T03:56:28.5237855Z           "complete": true,
2026-06-21T03:56:28.5237935Z           "evidence": [
2026-06-21T03:56:28.5238016Z             {
2026-06-21T03:56:28.5238131Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5238213Z               "line": 454
2026-06-21T03:56:28.5238298Z             }
2026-06-21T03:56:28.5238373Z           ]
2026-06-21T03:56:28.5238455Z         },
2026-06-21T03:56:28.5238641Z         "impl": {
2026-06-21T03:56:28.5238741Z           "complete": true,
2026-06-21T03:56:28.5238908Z           "evidence": [
2026-06-21T03:56:28.5239070Z             {
2026-06-21T03:56:28.5239195Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5239275Z               "line": 203
2026-06-21T03:56:28.5239356Z             },
2026-06-21T03:56:28.5239424Z             {
2026-06-21T03:56:28.5239538Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5239618Z               "line": 487
2026-06-21T03:56:28.5239693Z             },
2026-06-21T03:56:28.5239780Z             {
2026-06-21T03:56:28.5239895Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5239980Z               "line": 1688
2026-06-21T03:56:28.5240051Z             },
2026-06-21T03:56:28.5240128Z             {
2026-06-21T03:56:28.5240247Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.5240327Z               "line": 331
2026-06-21T03:56:28.5240405Z             }
2026-06-21T03:56:28.5240486Z           ]
2026-06-21T03:56:28.5240567Z         },
2026-06-21T03:56:28.5240656Z         "int": {
2026-06-21T03:56:28.5240748Z           "complete": true,
2026-06-21T03:56:28.5240834Z           "evidence": [
2026-06-21T03:56:28.5240910Z             {
2026-06-21T03:56:28.5241029Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.5241139Z               "line": 720
2026-06-21T03:56:28.5241225Z             },
2026-06-21T03:56:28.5241295Z             {
2026-06-21T03:56:28.5241402Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.5241491Z               "line": 837
2026-06-21T03:56:28.5241577Z             },
2026-06-21T03:56:28.5241688Z             {
2026-06-21T03:56:28.5241825Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T03:56:28.5241915Z               "line": 266
2026-06-21T03:56:28.5241996Z             }
2026-06-21T03:56:28.5242072Z           ]
2026-06-21T03:56:28.5242212Z         },
2026-06-21T03:56:28.5242284Z         "unit": {
2026-06-21T03:56:28.5242375Z           "complete": true,
2026-06-21T03:56:28.5242466Z           "evidence": [
2026-06-21T03:56:28.5242541Z             {
2026-06-21T03:56:28.5242637Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.5242719Z               "line": 985
2026-06-21T03:56:28.5242799Z             },
2026-06-21T03:56:28.5242875Z             {
2026-06-21T03:56:28.5242986Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.5243062Z               "line": 1019
2026-06-21T03:56:28.5243147Z             }
2026-06-21T03:56:28.5243233Z           ]
2026-06-21T03:56:28.5243305Z         }
2026-06-21T03:56:28.5243382Z       }
2026-06-21T03:56:28.5243457Z     },
2026-06-21T03:56:28.5243538Z     {
2026-06-21T03:56:28.5243644Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T03:56:28.5244192Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T03:56:28.5244297Z       "requiredStages": [
2026-06-21T03:56:28.5244373Z         "impl",
2026-06-21T03:56:28.5244459Z         "unit"
2026-06-21T03:56:28.5244536Z       ],
2026-06-21T03:56:28.5244622Z       "stages": {
2026-06-21T03:56:28.5244706Z         "doc": {
2026-06-21T03:56:28.5244791Z           "complete": false,
2026-06-21T03:56:28.5244882Z           "evidence": []
2026-06-21T03:56:28.5244963Z         },
2026-06-21T03:56:28.5245051Z         "impl": {
2026-06-21T03:56:28.5245137Z           "complete": true,
2026-06-21T03:56:28.5245218Z           "evidence": [
2026-06-21T03:56:28.5245295Z             {
2026-06-21T03:56:28.5245413Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5245499Z               "line": 759
2026-06-21T03:56:28.5245586Z             }
2026-06-21T03:56:28.5245672Z           ]
2026-06-21T03:56:28.5245752Z         },
2026-06-21T03:56:28.5245943Z         "int": {
2026-06-21T03:56:28.5246033Z           "complete": false,
2026-06-21T03:56:28.5246225Z           "evidence": []
2026-06-21T03:56:28.5249426Z         },
2026-06-21T03:56:28.5249530Z         "unit": {
2026-06-21T03:56:28.5249630Z           "complete": true,
2026-06-21T03:56:28.5249713Z           "evidence": [
2026-06-21T03:56:28.5249797Z             {
2026-06-21T03:56:28.5249926Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5250003Z               "line": 873
2026-06-21T03:56:28.5250084Z             }
2026-06-21T03:56:28.5250163Z           ]
2026-06-21T03:56:28.5250244Z         }
2026-06-21T03:56:28.5250320Z       }
2026-06-21T03:56:28.5250402Z     },
2026-06-21T03:56:28.5250478Z     {
2026-06-21T03:56:28.5250606Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T03:56:28.5252974Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T03:56:28.5253097Z       "requiredStages": [
2026-06-21T03:56:28.5253178Z         "impl",
2026-06-21T03:56:28.5253260Z         "unit",
2026-06-21T03:56:28.5253341Z         "int"
2026-06-21T03:56:28.5253416Z       ],
2026-06-21T03:56:28.5253493Z       "stages": {
2026-06-21T03:56:28.5253570Z         "doc": {
2026-06-21T03:56:28.5253660Z           "complete": false,
2026-06-21T03:56:28.5253745Z           "evidence": []
2026-06-21T03:56:28.5253832Z         },
2026-06-21T03:56:28.5253918Z         "impl": {
2026-06-21T03:56:28.5253999Z           "complete": true,
2026-06-21T03:56:28.5254083Z           "evidence": [
2026-06-21T03:56:28.5254166Z             {
2026-06-21T03:56:28.5254289Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5254370Z               "line": 705
2026-06-21T03:56:28.5254456Z             }
2026-06-21T03:56:28.5254533Z           ]
2026-06-21T03:56:28.5254614Z         },
2026-06-21T03:56:28.5254690Z         "int": {
2026-06-21T03:56:28.5254791Z           "complete": true,
2026-06-21T03:56:28.5254881Z           "evidence": [
2026-06-21T03:56:28.5254961Z             {
2026-06-21T03:56:28.5255096Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T03:56:28.5255182Z               "line": 24
2026-06-21T03:56:28.5255257Z             }
2026-06-21T03:56:28.5255337Z           ]
2026-06-21T03:56:28.5255413Z         },
2026-06-21T03:56:28.5255494Z         "unit": {
2026-06-21T03:56:28.5255579Z           "complete": true,
2026-06-21T03:56:28.5255658Z           "evidence": [
2026-06-21T03:56:28.5255730Z             {
2026-06-21T03:56:28.5255850Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5255931Z               "line": 918
2026-06-21T03:56:28.5256016Z             }
2026-06-21T03:56:28.5256094Z           ]
2026-06-21T03:56:28.5256175Z         }
2026-06-21T03:56:28.5256255Z       }
2026-06-21T03:56:28.5256336Z     },
2026-06-21T03:56:28.5256423Z     {
2026-06-21T03:56:28.5256532Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T03:56:28.5260167Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T03:56:28.5260505Z       "requiredStages": [
2026-06-21T03:56:28.5260583Z         "impl",
2026-06-21T03:56:28.5260668Z         "unit",
2026-06-21T03:56:28.5260742Z         "int"
2026-06-21T03:56:28.5260823Z       ],
2026-06-21T03:56:28.5260910Z       "stages": {
2026-06-21T03:56:28.5260992Z         "doc": {
2026-06-21T03:56:28.5261076Z           "complete": false,
2026-06-21T03:56:28.5261162Z           "evidence": []
2026-06-21T03:56:28.5261244Z         },
2026-06-21T03:56:28.5261330Z         "impl": {
2026-06-21T03:56:28.5261414Z           "complete": true,
2026-06-21T03:56:28.5261501Z           "evidence": [
2026-06-21T03:56:28.5261578Z             {
2026-06-21T03:56:28.5261696Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5261781Z               "line": 391
2026-06-21T03:56:28.5261859Z             },
2026-06-21T03:56:28.5261939Z             {
2026-06-21T03:56:28.5262039Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5262120Z               "line": 343
2026-06-21T03:56:28.5262203Z             },
2026-06-21T03:56:28.5262287Z             {
2026-06-21T03:56:28.5262392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5262469Z               "line": 1750
2026-06-21T03:56:28.5262560Z             },
2026-06-21T03:56:28.5262635Z             {
2026-06-21T03:56:28.5262736Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5262818Z               "line": 3191
2026-06-21T03:56:28.5262898Z             }
2026-06-21T03:56:28.5262969Z           ]
2026-06-21T03:56:28.5263044Z         },
2026-06-21T03:56:28.5263130Z         "int": {
2026-06-21T03:56:28.5263206Z           "complete": true,
2026-06-21T03:56:28.5263285Z           "evidence": [
2026-06-21T03:56:28.5263370Z             {
2026-06-21T03:56:28.5263495Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:56:28.5263577Z               "line": 353
2026-06-21T03:56:28.5263652Z             },
2026-06-21T03:56:28.5263729Z             {
2026-06-21T03:56:28.5263858Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T03:56:28.5263957Z               "line": 23
2026-06-21T03:56:28.5264038Z             }
2026-06-21T03:56:28.5264125Z           ]
2026-06-21T03:56:28.5264201Z         },
2026-06-21T03:56:28.5264277Z         "unit": {
2026-06-21T03:56:28.5264373Z           "complete": true,
2026-06-21T03:56:28.5264454Z           "evidence": [
2026-06-21T03:56:28.5264530Z             {
2026-06-21T03:56:28.5264649Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5264731Z               "line": 743
2026-06-21T03:56:28.5264811Z             },
2026-06-21T03:56:28.5264892Z             {
2026-06-21T03:56:28.5265002Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5265084Z               "line": 7863
2026-06-21T03:56:28.5265164Z             }
2026-06-21T03:56:28.5265250Z           ]
2026-06-21T03:56:28.5265332Z         }
2026-06-21T03:56:28.5265413Z       }
2026-06-21T03:56:28.5265488Z     },
2026-06-21T03:56:28.5265565Z     {
2026-06-21T03:56:28.5265665Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T03:56:28.5269095Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T03:56:28.5269297Z       "requiredStages": [
2026-06-21T03:56:28.5269378Z         "impl",
2026-06-21T03:56:28.5269458Z         "unit",
2026-06-21T03:56:28.5269540Z         "int"
2026-06-21T03:56:28.5269621Z       ],
2026-06-21T03:56:28.5269702Z       "stages": {
2026-06-21T03:56:28.5269782Z         "doc": {
2026-06-21T03:56:28.5269864Z           "complete": false,
2026-06-21T03:56:28.5269950Z           "evidence": []
2026-06-21T03:56:28.5270026Z         },
2026-06-21T03:56:28.5270107Z         "impl": {
2026-06-21T03:56:28.5270194Z           "complete": true,
2026-06-21T03:56:28.5270288Z           "evidence": [
2026-06-21T03:56:28.5270360Z             {
2026-06-21T03:56:28.5270470Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5270556Z               "line": 64
2026-06-21T03:56:28.5270640Z             },
2026-06-21T03:56:28.5270722Z             {
2026-06-21T03:56:28.5270833Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5270927Z               "line": 78
2026-06-21T03:56:28.5271003Z             },
2026-06-21T03:56:28.5271080Z             {
2026-06-21T03:56:28.5271200Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5271284Z               "line": 170
2026-06-21T03:56:28.5271369Z             },
2026-06-21T03:56:28.5271450Z             {
2026-06-21T03:56:28.5271561Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5271645Z               "line": 185
2026-06-21T03:56:28.5271722Z             },
2026-06-21T03:56:28.5271799Z             {
2026-06-21T03:56:28.5271909Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5271998Z               "line": 195
2026-06-21T03:56:28.5272076Z             },
2026-06-21T03:56:28.5272161Z             {
2026-06-21T03:56:28.5272279Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5272366Z               "line": 205
2026-06-21T03:56:28.5272443Z             },
2026-06-21T03:56:28.5272519Z             {
2026-06-21T03:56:28.5272628Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5272715Z               "line": 294
2026-06-21T03:56:28.5272800Z             },
2026-06-21T03:56:28.5272881Z             {
2026-06-21T03:56:28.5272981Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5273058Z               "line": 308
2026-06-21T03:56:28.5273134Z             },
2026-06-21T03:56:28.5273224Z             {
2026-06-21T03:56:28.5273339Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5273412Z               "line": 377
2026-06-21T03:56:28.5273495Z             },
2026-06-21T03:56:28.5273576Z             {
2026-06-21T03:56:28.5273681Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5273762Z               "line": 437
2026-06-21T03:56:28.5273954Z             },
2026-06-21T03:56:28.5274037Z             {
2026-06-21T03:56:28.5274151Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5274308Z               "line": 455
2026-06-21T03:56:28.5274390Z             }
2026-06-21T03:56:28.5274470Z           ]
2026-06-21T03:56:28.5274551Z         },
2026-06-21T03:56:28.5274632Z         "int": {
2026-06-21T03:56:28.5274719Z           "complete": true,
2026-06-21T03:56:28.5274804Z           "evidence": [
2026-06-21T03:56:28.5274885Z             {
2026-06-21T03:56:28.5275014Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:56:28.5275105Z               "line": 45
2026-06-21T03:56:28.5275180Z             },
2026-06-21T03:56:28.5275267Z             {
2026-06-21T03:56:28.5275385Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T03:56:28.5275466Z               "line": 354
2026-06-21T03:56:28.5275552Z             },
2026-06-21T03:56:28.5275635Z             {
2026-06-21T03:56:28.5275767Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T03:56:28.5275867Z               "line": 31
2026-06-21T03:56:28.5275950Z             }
2026-06-21T03:56:28.5276029Z           ]
2026-06-21T03:56:28.5276110Z         },
2026-06-21T03:56:28.5276192Z         "unit": {
2026-06-21T03:56:28.5276279Z           "complete": true,
2026-06-21T03:56:28.5276368Z           "evidence": [
2026-06-21T03:56:28.5276443Z             {
2026-06-21T03:56:28.5276562Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5276647Z               "line": 727
2026-06-21T03:56:28.5276717Z             }
2026-06-21T03:56:28.5276798Z           ]
2026-06-21T03:56:28.5276875Z         }
2026-06-21T03:56:28.5276957Z       }
2026-06-21T03:56:28.5277037Z     },
2026-06-21T03:56:28.5277122Z     {
2026-06-21T03:56:28.5277219Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T03:56:28.5277432Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T03:56:28.5277534Z       "requiredStages": [
2026-06-21T03:56:28.5277609Z         "impl",
2026-06-21T03:56:28.5277700Z         "unit"
2026-06-21T03:56:28.5277775Z       ],
2026-06-21T03:56:28.5277853Z       "stages": {
2026-06-21T03:56:28.5277938Z         "doc": {
2026-06-21T03:56:28.5278024Z           "complete": false,
2026-06-21T03:56:28.5278110Z           "evidence": []
2026-06-21T03:56:28.5278187Z         },
2026-06-21T03:56:28.5278272Z         "impl": {
2026-06-21T03:56:28.5278358Z           "complete": true,
2026-06-21T03:56:28.5278439Z           "evidence": [
2026-06-21T03:56:28.5278511Z             {
2026-06-21T03:56:28.5278615Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5278701Z               "line": 14
2026-06-21T03:56:28.5278778Z             },
2026-06-21T03:56:28.5278855Z             {
2026-06-21T03:56:28.5279024Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.5279110Z               "line": 566
2026-06-21T03:56:28.5279191Z             }
2026-06-21T03:56:28.5279270Z           ]
2026-06-21T03:56:28.5279350Z         },
2026-06-21T03:56:28.5279422Z         "int": {
2026-06-21T03:56:28.5279514Z           "complete": false,
2026-06-21T03:56:28.5279599Z           "evidence": []
2026-06-21T03:56:28.5279674Z         },
2026-06-21T03:56:28.5279751Z         "unit": {
2026-06-21T03:56:28.5279843Z           "complete": true,
2026-06-21T03:56:28.5279928Z           "evidence": [
2026-06-21T03:56:28.5280008Z             {
2026-06-21T03:56:28.5280114Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5280186Z               "line": 130
2026-06-21T03:56:28.5280267Z             },
2026-06-21T03:56:28.5280352Z             {
2026-06-21T03:56:28.5280443Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5280524Z               "line": 138
2026-06-21T03:56:28.5280605Z             },
2026-06-21T03:56:28.5280681Z             {
2026-06-21T03:56:28.5280782Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5280977Z               "line": 146
2026-06-21T03:56:28.5281064Z             },
2026-06-21T03:56:28.5281249Z             {
2026-06-21T03:56:28.5281355Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5281440Z               "line": 154
2026-06-21T03:56:28.5281520Z             },
2026-06-21T03:56:28.5281601Z             {
2026-06-21T03:56:28.5281703Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5281783Z               "line": 162
2026-06-21T03:56:28.5281863Z             },
2026-06-21T03:56:28.5281944Z             {
2026-06-21T03:56:28.5282049Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T03:56:28.5282131Z               "line": 170
2026-06-21T03:56:28.5282210Z             }
2026-06-21T03:56:28.5282282Z           ]
2026-06-21T03:56:28.5282354Z         }
2026-06-21T03:56:28.5282435Z       }
2026-06-21T03:56:28.5282511Z     },
2026-06-21T03:56:28.5282592Z     {
2026-06-21T03:56:28.5282693Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T03:56:28.5283570Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T03:56:28.5283671Z       "requiredStages": [
2026-06-21T03:56:28.5283750Z         "impl",
2026-06-21T03:56:28.5283832Z         "unit"
2026-06-21T03:56:28.5283919Z       ],
2026-06-21T03:56:28.5283995Z       "stages": {
2026-06-21T03:56:28.5284079Z         "doc": {
2026-06-21T03:56:28.5284169Z           "complete": false,
2026-06-21T03:56:28.5284250Z           "evidence": []
2026-06-21T03:56:28.5284336Z         },
2026-06-21T03:56:28.5284410Z         "impl": {
2026-06-21T03:56:28.5284500Z           "complete": true,
2026-06-21T03:56:28.5284582Z           "evidence": [
2026-06-21T03:56:28.5284669Z             {
2026-06-21T03:56:28.5284815Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5284897Z               "line": 34
2026-06-21T03:56:28.5284974Z             }
2026-06-21T03:56:28.5285054Z           ]
2026-06-21T03:56:28.5285140Z         },
2026-06-21T03:56:28.5285217Z         "int": {
2026-06-21T03:56:28.5285302Z           "complete": false,
2026-06-21T03:56:28.5285387Z           "evidence": []
2026-06-21T03:56:28.5285468Z         },
2026-06-21T03:56:28.5285546Z         "unit": {
2026-06-21T03:56:28.5285622Z           "complete": true,
2026-06-21T03:56:28.5285712Z           "evidence": [
2026-06-21T03:56:28.5285788Z             {
2026-06-21T03:56:28.5285922Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5286013Z               "line": 188
2026-06-21T03:56:28.5286094Z             },
2026-06-21T03:56:28.5286176Z             {
2026-06-21T03:56:28.5286303Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5286394Z               "line": 200
2026-06-21T03:56:28.5286471Z             },
2026-06-21T03:56:28.5286562Z             {
2026-06-21T03:56:28.5286694Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5286782Z               "line": 211
2026-06-21T03:56:28.5286867Z             },
2026-06-21T03:56:28.5286946Z             {
2026-06-21T03:56:28.5287079Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5287156Z               "line": 253
2026-06-21T03:56:28.5287240Z             },
2026-06-21T03:56:28.5287321Z             {
2026-06-21T03:56:28.5287444Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5287531Z               "line": 277
2026-06-21T03:56:28.5287606Z             },
2026-06-21T03:56:28.5287682Z             {
2026-06-21T03:56:28.5287812Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5287898Z               "line": 300
2026-06-21T03:56:28.5287978Z             },
2026-06-21T03:56:28.5288060Z             {
2026-06-21T03:56:28.5288269Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T03:56:28.5288433Z               "line": 316
2026-06-21T03:56:28.5288512Z             }
2026-06-21T03:56:28.5288589Z           ]
2026-06-21T03:56:28.5288670Z         }
2026-06-21T03:56:28.5288752Z       }
2026-06-21T03:56:28.5288832Z     },
2026-06-21T03:56:28.5288903Z     {
2026-06-21T03:56:28.5289086Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T03:56:28.5289608Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T03:56:28.5289709Z       "requiredStages": [
2026-06-21T03:56:28.5289793Z         "impl",
2026-06-21T03:56:28.5289868Z         "unit"
2026-06-21T03:56:28.5289944Z       ],
2026-06-21T03:56:28.5290026Z       "stages": {
2026-06-21T03:56:28.5290107Z         "doc": {
2026-06-21T03:56:28.5290197Z           "complete": false,
2026-06-21T03:56:28.5290302Z           "evidence": []
2026-06-21T03:56:28.5290379Z         },
2026-06-21T03:56:28.5290470Z         "impl": {
2026-06-21T03:56:28.5290554Z           "complete": true,
2026-06-21T03:56:28.5290631Z           "evidence": [
2026-06-21T03:56:28.5290712Z             {
2026-06-21T03:56:28.5290827Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5290902Z               "line": 29
2026-06-21T03:56:28.5290971Z             },
2026-06-21T03:56:28.5291051Z             {
2026-06-21T03:56:28.5291156Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5291241Z               "line": 174
2026-06-21T03:56:28.5291323Z             },
2026-06-21T03:56:28.5291404Z             {
2026-06-21T03:56:28.5291513Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5291595Z               "line": 194
2026-06-21T03:56:28.5291676Z             },
2026-06-21T03:56:28.5291756Z             {
2026-06-21T03:56:28.5291866Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5291958Z               "line": 222
2026-06-21T03:56:28.5292047Z             }
2026-06-21T03:56:28.5292133Z           ]
2026-06-21T03:56:28.5292205Z         },
2026-06-21T03:56:28.5292291Z         "int": {
2026-06-21T03:56:28.5292371Z           "complete": false,
2026-06-21T03:56:28.5292461Z           "evidence": []
2026-06-21T03:56:28.5292542Z         },
2026-06-21T03:56:28.5292629Z         "unit": {
2026-06-21T03:56:28.5292724Z           "complete": true,
2026-06-21T03:56:28.5292804Z           "evidence": [
2026-06-21T03:56:28.5292886Z             {
2026-06-21T03:56:28.5292995Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5293076Z               "line": 329
2026-06-21T03:56:28.5293157Z             },
2026-06-21T03:56:28.5293239Z             {
2026-06-21T03:56:28.5293349Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5293428Z               "line": 344
2026-06-21T03:56:28.5293515Z             },
2026-06-21T03:56:28.5293596Z             {
2026-06-21T03:56:28.5293706Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5293796Z               "line": 417
2026-06-21T03:56:28.5293873Z             },
2026-06-21T03:56:28.5293949Z             {
2026-06-21T03:56:28.5294053Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5294135Z               "line": 433
2026-06-21T03:56:28.5294217Z             },
2026-06-21T03:56:28.5294292Z             {
2026-06-21T03:56:28.5294396Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5294474Z               "line": 492
2026-06-21T03:56:28.5294560Z             },
2026-06-21T03:56:28.5294639Z             {
2026-06-21T03:56:28.5294739Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5294825Z               "line": 506
2026-06-21T03:56:28.5294910Z             },
2026-06-21T03:56:28.5294989Z             {
2026-06-21T03:56:28.5295094Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5295309Z               "line": 517
2026-06-21T03:56:28.5295390Z             },
2026-06-21T03:56:28.5295577Z             {
2026-06-21T03:56:28.5295681Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5295767Z               "line": 528
2026-06-21T03:56:28.5295853Z             }
2026-06-21T03:56:28.5295934Z           ]
2026-06-21T03:56:28.5296014Z         }
2026-06-21T03:56:28.5296092Z       }
2026-06-21T03:56:28.5296177Z     },
2026-06-21T03:56:28.5296263Z     {
2026-06-21T03:56:28.5296382Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T03:56:28.5297036Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T03:56:28.5297127Z       "requiredStages": [
2026-06-21T03:56:28.5297216Z         "impl",
2026-06-21T03:56:28.5297293Z         "unit"
2026-06-21T03:56:28.5297389Z       ],
2026-06-21T03:56:28.5297465Z       "stages": {
2026-06-21T03:56:28.5297554Z         "doc": {
2026-06-21T03:56:28.5297654Z           "complete": false,
2026-06-21T03:56:28.5297740Z           "evidence": []
2026-06-21T03:56:28.5297824Z         },
2026-06-21T03:56:28.5297909Z         "impl": {
2026-06-21T03:56:28.5298004Z           "complete": true,
2026-06-21T03:56:28.5298086Z           "evidence": [
2026-06-21T03:56:28.5298176Z             {
2026-06-21T03:56:28.5298300Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5298382Z               "line": 27
2026-06-21T03:56:28.5298463Z             },
2026-06-21T03:56:28.5298543Z             {
2026-06-21T03:56:28.5298668Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5298758Z               "line": 110
2026-06-21T03:56:28.5298829Z             },
2026-06-21T03:56:28.5298910Z             {
2026-06-21T03:56:28.5299158Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5299254Z               "line": 153
2026-06-21T03:56:28.5299336Z             },
2026-06-21T03:56:28.5299473Z             {
2026-06-21T03:56:28.5299603Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5299693Z               "line": 182
2026-06-21T03:56:28.5299768Z             },
2026-06-21T03:56:28.5299850Z             {
2026-06-21T03:56:28.5299994Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5300078Z               "line": 31
2026-06-21T03:56:28.5300168Z             },
2026-06-21T03:56:28.5300244Z             {
2026-06-21T03:56:28.5300372Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5300466Z               "line": 113
2026-06-21T03:56:28.5300538Z             },
2026-06-21T03:56:28.5300619Z             {
2026-06-21T03:56:28.5300743Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5300828Z               "line": 138
2026-06-21T03:56:28.5300920Z             }
2026-06-21T03:56:28.5300996Z           ]
2026-06-21T03:56:28.5301081Z         },
2026-06-21T03:56:28.5301167Z         "int": {
2026-06-21T03:56:28.5301254Z           "complete": false,
2026-06-21T03:56:28.5301339Z           "evidence": []
2026-06-21T03:56:28.5301425Z         },
2026-06-21T03:56:28.5301501Z         "unit": {
2026-06-21T03:56:28.5301583Z           "complete": true,
2026-06-21T03:56:28.5301673Z           "evidence": [
2026-06-21T03:56:28.5301749Z             {
2026-06-21T03:56:28.5301865Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5301945Z               "line": 261
2026-06-21T03:56:28.5302021Z             },
2026-06-21T03:56:28.5302106Z             {
2026-06-21T03:56:28.5302227Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5302316Z               "line": 276
2026-06-21T03:56:28.5302388Z             },
2026-06-21T03:56:28.5302475Z             {
2026-06-21T03:56:28.5302689Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5302775Z               "line": 293
2026-06-21T03:56:28.5302950Z             },
2026-06-21T03:56:28.5303030Z             {
2026-06-21T03:56:28.5303155Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5303237Z               "line": 310
2026-06-21T03:56:28.5303317Z             },
2026-06-21T03:56:28.5303398Z             {
2026-06-21T03:56:28.5303523Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5303613Z               "line": 327
2026-06-21T03:56:28.5303693Z             },
2026-06-21T03:56:28.5303776Z             {
2026-06-21T03:56:28.5303894Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.5303979Z               "line": 366
2026-06-21T03:56:28.5304060Z             },
2026-06-21T03:56:28.5304142Z             {
2026-06-21T03:56:28.5304289Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5304390Z               "line": 179
2026-06-21T03:56:28.5304471Z             },
2026-06-21T03:56:28.5304547Z             {
2026-06-21T03:56:28.5304695Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5304796Z               "line": 194
2026-06-21T03:56:28.5304866Z             },
2026-06-21T03:56:28.5304952Z             {
2026-06-21T03:56:28.5305082Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5305167Z               "line": 204
2026-06-21T03:56:28.5305247Z             },
2026-06-21T03:56:28.5305332Z             {
2026-06-21T03:56:28.5305466Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5305550Z               "line": 259
2026-06-21T03:56:28.5305640Z             },
2026-06-21T03:56:28.5305717Z             {
2026-06-21T03:56:28.5305851Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5305931Z               "line": 269
2026-06-21T03:56:28.5306027Z             },
2026-06-21T03:56:28.5306103Z             {
2026-06-21T03:56:28.5306231Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.5306328Z               "line": 283
2026-06-21T03:56:28.5306413Z             }
2026-06-21T03:56:28.5306499Z           ]
2026-06-21T03:56:28.5306579Z         }
2026-06-21T03:56:28.5306661Z       }
2026-06-21T03:56:28.5306747Z     },
2026-06-21T03:56:28.5306823Z     {
2026-06-21T03:56:28.5306932Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T03:56:28.5307104Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T03:56:28.5307199Z       "requiredStages": [],
2026-06-21T03:56:28.5307282Z       "stages": {
2026-06-21T03:56:28.5307367Z         "doc": {
2026-06-21T03:56:28.5307462Z           "complete": false,
2026-06-21T03:56:28.5307548Z           "evidence": []
2026-06-21T03:56:28.5307630Z         },
2026-06-21T03:56:28.5307710Z         "impl": {
2026-06-21T03:56:28.5307805Z           "complete": false,
2026-06-21T03:56:28.5307887Z           "evidence": []
2026-06-21T03:56:28.5307973Z         },
2026-06-21T03:56:28.5308067Z         "int": {
2026-06-21T03:56:28.5308148Z           "complete": false,
2026-06-21T03:56:28.5308229Z           "evidence": []
2026-06-21T03:56:28.5308310Z         },
2026-06-21T03:56:28.5308393Z         "unit": {
2026-06-21T03:56:28.5308474Z           "complete": false,
2026-06-21T03:56:28.5308560Z           "evidence": []
2026-06-21T03:56:28.5308646Z         }
2026-06-21T03:56:28.5308718Z       }
2026-06-21T03:56:28.5308793Z     },
2026-06-21T03:56:28.5308865Z     {
2026-06-21T03:56:28.5309037Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T03:56:28.5309839Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T03:56:28.5310047Z       "requiredStages": [
2026-06-21T03:56:28.5310134Z         "impl",
2026-06-21T03:56:28.5310216Z         "unit"
2026-06-21T03:56:28.5310391Z       ],
2026-06-21T03:56:28.5310473Z       "stages": {
2026-06-21T03:56:28.5310559Z         "doc": {
2026-06-21T03:56:28.5310643Z           "complete": false,
2026-06-21T03:56:28.5310719Z           "evidence": []
2026-06-21T03:56:28.5310804Z         },
2026-06-21T03:56:28.5310881Z         "impl": {
2026-06-21T03:56:28.5310974Z           "complete": true,
2026-06-21T03:56:28.5311054Z           "evidence": [
2026-06-21T03:56:28.5311136Z             {
2026-06-21T03:56:28.5311256Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5311341Z               "line": 26
2026-06-21T03:56:28.5311418Z             },
2026-06-21T03:56:28.5311499Z             {
2026-06-21T03:56:28.5311618Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5311703Z               "line": 95
2026-06-21T03:56:28.5311776Z             },
2026-06-21T03:56:28.5311871Z             {
2026-06-21T03:56:28.5311975Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5312071Z               "line": 166
2026-06-21T03:56:28.5312152Z             },
2026-06-21T03:56:28.5312238Z             {
2026-06-21T03:56:28.5312357Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5312435Z               "line": 19
2026-06-21T03:56:28.5312519Z             },
2026-06-21T03:56:28.5312595Z             {
2026-06-21T03:56:28.5312701Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5312787Z               "line": 50
2026-06-21T03:56:28.5312876Z             },
2026-06-21T03:56:28.5312958Z             {
2026-06-21T03:56:28.5313064Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:56:28.5313162Z               "line": 18
2026-06-21T03:56:28.5313239Z             },
2026-06-21T03:56:28.5313326Z             {
2026-06-21T03:56:28.5313431Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:56:28.5313519Z               "line": 71
2026-06-21T03:56:28.5313600Z             },
2026-06-21T03:56:28.5313686Z             {
2026-06-21T03:56:28.5313811Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5313886Z               "line": 87
2026-06-21T03:56:28.5313967Z             }
2026-06-21T03:56:28.5314049Z           ]
2026-06-21T03:56:28.5314125Z         },
2026-06-21T03:56:28.5314215Z         "int": {
2026-06-21T03:56:28.5314301Z           "complete": false,
2026-06-21T03:56:28.5314393Z           "evidence": []
2026-06-21T03:56:28.5314478Z         },
2026-06-21T03:56:28.5314563Z         "unit": {
2026-06-21T03:56:28.5314640Z           "complete": true,
2026-06-21T03:56:28.5314731Z           "evidence": [
2026-06-21T03:56:28.5314817Z             {
2026-06-21T03:56:28.5314936Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5315022Z               "line": 289
2026-06-21T03:56:28.5315098Z             },
2026-06-21T03:56:28.5315179Z             {
2026-06-21T03:56:28.5315295Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5315380Z               "line": 314
2026-06-21T03:56:28.5315450Z             },
2026-06-21T03:56:28.5315531Z             {
2026-06-21T03:56:28.5315647Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5315731Z               "line": 350
2026-06-21T03:56:28.5315812Z             },
2026-06-21T03:56:28.5315888Z             {
2026-06-21T03:56:28.5316007Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5316101Z               "line": 418
2026-06-21T03:56:28.5316200Z             },
2026-06-21T03:56:28.5316311Z             {
2026-06-21T03:56:28.5316425Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5316505Z               "line": 429
2026-06-21T03:56:28.5316587Z             },
2026-06-21T03:56:28.5316673Z             {
2026-06-21T03:56:28.5316796Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5316969Z               "line": 460
2026-06-21T03:56:28.5317059Z             },
2026-06-21T03:56:28.5317139Z             {
2026-06-21T03:56:28.5317345Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.5317430Z               "line": 471
2026-06-21T03:56:28.5317512Z             },
2026-06-21T03:56:28.5317598Z             {
2026-06-21T03:56:28.5317707Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5317798Z               "line": 77
2026-06-21T03:56:28.5317875Z             },
2026-06-21T03:56:28.5317960Z             {
2026-06-21T03:56:28.5318069Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5318157Z               "line": 97
2026-06-21T03:56:28.5318242Z             },
2026-06-21T03:56:28.5318317Z             {
2026-06-21T03:56:28.5318433Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5318514Z               "line": 112
2026-06-21T03:56:28.5318595Z             },
2026-06-21T03:56:28.5318688Z             {
2026-06-21T03:56:28.5318789Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5318874Z               "line": 123
2026-06-21T03:56:28.5319029Z             },
2026-06-21T03:56:28.5319111Z             {
2026-06-21T03:56:28.5319221Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5319306Z               "line": 130
2026-06-21T03:56:28.5319392Z             },
2026-06-21T03:56:28.5319469Z             {
2026-06-21T03:56:28.5319579Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T03:56:28.5319653Z               "line": 145
2026-06-21T03:56:28.5319740Z             },
2026-06-21T03:56:28.5319817Z             {
2026-06-21T03:56:28.5319917Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:56:28.5319997Z               "line": 115
2026-06-21T03:56:28.5320079Z             },
2026-06-21T03:56:28.5320161Z             {
2026-06-21T03:56:28.5320255Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:56:28.5320350Z               "line": 130
2026-06-21T03:56:28.5320432Z             },
2026-06-21T03:56:28.5320513Z             {
2026-06-21T03:56:28.5320631Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5323842Z               "line": 428
2026-06-21T03:56:28.5323948Z             }
2026-06-21T03:56:28.5324033Z           ]
2026-06-21T03:56:28.5324118Z         }
2026-06-21T03:56:28.5324193Z       }
2026-06-21T03:56:28.5324271Z     },
2026-06-21T03:56:28.5324352Z     {
2026-06-21T03:56:28.5324480Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T03:56:28.5330730Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T03:56:28.5331092Z       "requiredStages": [
2026-06-21T03:56:28.5331206Z         "impl",
2026-06-21T03:56:28.5331298Z         "unit",
2026-06-21T03:56:28.5331383Z         "int"
2026-06-21T03:56:28.5331463Z       ],
2026-06-21T03:56:28.5331535Z       "stages": {
2026-06-21T03:56:28.5331617Z         "doc": {
2026-06-21T03:56:28.5331717Z           "complete": false,
2026-06-21T03:56:28.5331801Z           "evidence": []
2026-06-21T03:56:28.5331891Z         },
2026-06-21T03:56:28.5331968Z         "impl": {
2026-06-21T03:56:28.5332053Z           "complete": true,
2026-06-21T03:56:28.5332137Z           "evidence": [
2026-06-21T03:56:28.5332223Z             {
2026-06-21T03:56:28.5332343Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5332428Z               "line": 895
2026-06-21T03:56:28.5332509Z             },
2026-06-21T03:56:28.5332586Z             {
2026-06-21T03:56:28.5332701Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5332790Z               "line": 322
2026-06-21T03:56:28.5332872Z             }
2026-06-21T03:56:28.5332949Z           ]
2026-06-21T03:56:28.5333020Z         },
2026-06-21T03:56:28.5333100Z         "int": {
2026-06-21T03:56:28.5333192Z           "complete": true,
2026-06-21T03:56:28.5333282Z           "evidence": [
2026-06-21T03:56:28.5333358Z             {
2026-06-21T03:56:28.5333521Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.5333597Z               "line": 1952
2026-06-21T03:56:28.5333683Z             }
2026-06-21T03:56:28.5333758Z           ]
2026-06-21T03:56:28.5333845Z         },
2026-06-21T03:56:28.5333922Z         "unit": {
2026-06-21T03:56:28.5334006Z           "complete": true,
2026-06-21T03:56:28.5334092Z           "evidence": [
2026-06-21T03:56:28.5334169Z             {
2026-06-21T03:56:28.5334287Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5334364Z               "line": 2376
2026-06-21T03:56:28.5334451Z             },
2026-06-21T03:56:28.5334532Z             {
2026-06-21T03:56:28.5334639Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5334721Z               "line": 2440
2026-06-21T03:56:28.5334802Z             },
2026-06-21T03:56:28.5334888Z             {
2026-06-21T03:56:28.5334992Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5335083Z               "line": 2495
2026-06-21T03:56:28.5335165Z             }
2026-06-21T03:56:28.5335246Z           ]
2026-06-21T03:56:28.5335331Z         }
2026-06-21T03:56:28.5335412Z       }
2026-06-21T03:56:28.5335494Z     },
2026-06-21T03:56:28.5335570Z     {
2026-06-21T03:56:28.5335688Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T03:56:28.5336518Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T03:56:28.5336609Z       "requiredStages": [
2026-06-21T03:56:28.5336690Z         "doc",
2026-06-21T03:56:28.5336772Z         "impl",
2026-06-21T03:56:28.5336851Z         "unit"
2026-06-21T03:56:28.5336937Z       ],
2026-06-21T03:56:28.5337023Z       "stages": {
2026-06-21T03:56:28.5337104Z         "doc": {
2026-06-21T03:56:28.5337273Z           "complete": true,
2026-06-21T03:56:28.5337364Z           "evidence": [
2026-06-21T03:56:28.5337446Z             {
2026-06-21T03:56:28.5337635Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5337712Z               "line": 374
2026-06-21T03:56:28.5337784Z             }
2026-06-21T03:56:28.5337864Z           ]
2026-06-21T03:56:28.5337949Z         },
2026-06-21T03:56:28.5338032Z         "impl": {
2026-06-21T03:56:28.5338108Z           "complete": true,
2026-06-21T03:56:28.5338203Z           "evidence": [
2026-06-21T03:56:28.5338284Z             {
2026-06-21T03:56:28.5338389Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5338475Z               "line": 200
2026-06-21T03:56:28.5338556Z             },
2026-06-21T03:56:28.5338637Z             {
2026-06-21T03:56:28.5338742Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5338823Z               "line": 304
2026-06-21T03:56:28.5338913Z             },
2026-06-21T03:56:28.5339075Z             {
2026-06-21T03:56:28.5339185Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5339272Z               "line": 562
2026-06-21T03:56:28.5339358Z             },
2026-06-21T03:56:28.5339433Z             {
2026-06-21T03:56:28.5339543Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5339630Z               "line": 577
2026-06-21T03:56:28.5339710Z             },
2026-06-21T03:56:28.5339790Z             {
2026-06-21T03:56:28.5339890Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5339971Z               "line": 1224
2026-06-21T03:56:28.5340050Z             },
2026-06-21T03:56:28.5340126Z             {
2026-06-21T03:56:28.5340245Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5340327Z               "line": 443
2026-06-21T03:56:28.5340412Z             },
2026-06-21T03:56:28.5340488Z             {
2026-06-21T03:56:28.5340603Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5340684Z               "line": 590
2026-06-21T03:56:28.5340765Z             },
2026-06-21T03:56:28.5340851Z             {
2026-06-21T03:56:28.5340961Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5341042Z               "line": 731
2026-06-21T03:56:28.5341126Z             }
2026-06-21T03:56:28.5341204Z           ]
2026-06-21T03:56:28.5341290Z         },
2026-06-21T03:56:28.5341371Z         "int": {
2026-06-21T03:56:28.5341456Z           "complete": false,
2026-06-21T03:56:28.5341539Z           "evidence": []
2026-06-21T03:56:28.5341624Z         },
2026-06-21T03:56:28.5341704Z         "unit": {
2026-06-21T03:56:28.5341795Z           "complete": true,
2026-06-21T03:56:28.5341872Z           "evidence": [
2026-06-21T03:56:28.5341957Z             {
2026-06-21T03:56:28.5342067Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5342149Z               "line": 1155
2026-06-21T03:56:28.5342225Z             },
2026-06-21T03:56:28.5342310Z             {
2026-06-21T03:56:28.5342451Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T03:56:28.5342537Z               "line": 30
2026-06-21T03:56:28.5342627Z             }
2026-06-21T03:56:28.5342706Z           ]
2026-06-21T03:56:28.5342778Z         }
2026-06-21T03:56:28.5342860Z       }
2026-06-21T03:56:28.5342942Z     },
2026-06-21T03:56:28.5343021Z     {
2026-06-21T03:56:28.5343132Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T03:56:28.5346379Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T03:56:28.5346679Z       "requiredStages": [
2026-06-21T03:56:28.5346759Z         "impl",
2026-06-21T03:56:28.5346840Z         "unit",
2026-06-21T03:56:28.5346916Z         "int"
2026-06-21T03:56:28.5346989Z       ],
2026-06-21T03:56:28.5347069Z       "stages": {
2026-06-21T03:56:28.5347155Z         "doc": {
2026-06-21T03:56:28.5347231Z           "complete": false,
2026-06-21T03:56:28.5347318Z           "evidence": []
2026-06-21T03:56:28.5347398Z         },
2026-06-21T03:56:28.5347478Z         "impl": {
2026-06-21T03:56:28.5347568Z           "complete": true,
2026-06-21T03:56:28.5347650Z           "evidence": [
2026-06-21T03:56:28.5347729Z             {
2026-06-21T03:56:28.5347833Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5347910Z               "line": 718
2026-06-21T03:56:28.5347991Z             },
2026-06-21T03:56:28.5348067Z             {
2026-06-21T03:56:28.5348171Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5348258Z               "line": 887
2026-06-21T03:56:28.5348335Z             }
2026-06-21T03:56:28.5348415Z           ]
2026-06-21T03:56:28.5348495Z         },
2026-06-21T03:56:28.5348583Z         "int": {
2026-06-21T03:56:28.5348668Z           "complete": true,
2026-06-21T03:56:28.5348758Z           "evidence": [
2026-06-21T03:56:28.5348834Z             {
2026-06-21T03:56:28.5349030Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.5349120Z               "line": 403
2026-06-21T03:56:28.5349197Z             }
2026-06-21T03:56:28.5349283Z           ]
2026-06-21T03:56:28.5349359Z         },
2026-06-21T03:56:28.5349450Z         "unit": {
2026-06-21T03:56:28.5349532Z           "complete": true,
2026-06-21T03:56:28.5349612Z           "evidence": [
2026-06-21T03:56:28.5349693Z             {
2026-06-21T03:56:28.5349793Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5349876Z               "line": 1072
2026-06-21T03:56:28.5349950Z             },
2026-06-21T03:56:28.5350026Z             {
2026-06-21T03:56:28.5350123Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5350209Z               "line": 1096
2026-06-21T03:56:28.5350289Z             }
2026-06-21T03:56:28.5350369Z           ]
2026-06-21T03:56:28.5350455Z         }
2026-06-21T03:56:28.5350527Z       }
2026-06-21T03:56:28.5350606Z     },
2026-06-21T03:56:28.5350682Z     {
2026-06-21T03:56:28.5350800Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T03:56:28.5354312Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T03:56:28.5354646Z       "requiredStages": [
2026-06-21T03:56:28.5354727Z         "impl",
2026-06-21T03:56:28.5354808Z         "unit",
2026-06-21T03:56:28.5354888Z         "int"
2026-06-21T03:56:28.5354971Z       ],
2026-06-21T03:56:28.5355051Z       "stages": {
2026-06-21T03:56:28.5355126Z         "doc": {
2026-06-21T03:56:28.5355212Z           "complete": false,
2026-06-21T03:56:28.5355290Z           "evidence": []
2026-06-21T03:56:28.5355371Z         },
2026-06-21T03:56:28.5355455Z         "impl": {
2026-06-21T03:56:28.5355532Z           "complete": true,
2026-06-21T03:56:28.5355624Z           "evidence": [
2026-06-21T03:56:28.5355704Z             {
2026-06-21T03:56:28.5355803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5355898Z               "line": 1417
2026-06-21T03:56:28.5355975Z             },
2026-06-21T03:56:28.5356061Z             {
2026-06-21T03:56:28.5356160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5356242Z               "line": 1441
2026-06-21T03:56:28.5356319Z             }
2026-06-21T03:56:28.5356400Z           ]
2026-06-21T03:56:28.5356479Z         },
2026-06-21T03:56:28.5356552Z         "int": {
2026-06-21T03:56:28.5356643Z           "complete": true,
2026-06-21T03:56:28.5356715Z           "evidence": [
2026-06-21T03:56:28.5356794Z             {
2026-06-21T03:56:28.5356919Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T03:56:28.5357004Z               "line": 329
2026-06-21T03:56:28.5357090Z             }
2026-06-21T03:56:28.5357166Z           ]
2026-06-21T03:56:28.5357249Z         },
2026-06-21T03:56:28.5357333Z         "unit": {
2026-06-21T03:56:28.5357424Z           "complete": true,
2026-06-21T03:56:28.5357506Z           "evidence": [
2026-06-21T03:56:28.5357601Z             {
2026-06-21T03:56:28.5357695Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5357777Z               "line": 8169
2026-06-21T03:56:28.5357859Z             }
2026-06-21T03:56:28.5357940Z           ]
2026-06-21T03:56:28.5358019Z         }
2026-06-21T03:56:28.5358100Z       }
2026-06-21T03:56:28.5358181Z     },
2026-06-21T03:56:28.5358257Z     {
2026-06-21T03:56:28.5358350Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T03:56:28.5362233Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T03:56:28.5362349Z       "requiredStages": [
2026-06-21T03:56:28.5362534Z         "impl",
2026-06-21T03:56:28.5362620Z         "unit"
2026-06-21T03:56:28.5362701Z       ],
2026-06-21T03:56:28.5362877Z       "stages": {
2026-06-21T03:56:28.5362959Z         "doc": {
2026-06-21T03:56:28.5363045Z           "complete": false,
2026-06-21T03:56:28.5363125Z           "evidence": []
2026-06-21T03:56:28.5363201Z         },
2026-06-21T03:56:28.5363279Z         "impl": {
2026-06-21T03:56:28.5363378Z           "complete": true,
2026-06-21T03:56:28.5363458Z           "evidence": [
2026-06-21T03:56:28.5363533Z             {
2026-06-21T03:56:28.5363630Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5363714Z               "line": 910
2026-06-21T03:56:28.5363794Z             }
2026-06-21T03:56:28.5363874Z           ]
2026-06-21T03:56:28.5363956Z         },
2026-06-21T03:56:28.5364033Z         "int": {
2026-06-21T03:56:28.5364118Z           "complete": false,
2026-06-21T03:56:28.5364199Z           "evidence": []
2026-06-21T03:56:28.5364281Z         },
2026-06-21T03:56:28.5364362Z         "unit": {
2026-06-21T03:56:28.5364452Z           "complete": true,
2026-06-21T03:56:28.5364542Z           "evidence": [
2026-06-21T03:56:28.5364619Z             {
2026-06-21T03:56:28.5364719Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5364799Z               "line": 1112
2026-06-21T03:56:28.5364877Z             }
2026-06-21T03:56:28.5364953Z           ]
2026-06-21T03:56:28.5365033Z         }
2026-06-21T03:56:28.5365119Z       }
2026-06-21T03:56:28.5365196Z     },
2026-06-21T03:56:28.5365273Z     {
2026-06-21T03:56:28.5365387Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T03:56:28.5370008Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T03:56:28.5370141Z       "requiredStages": [
2026-06-21T03:56:28.5370221Z         "impl",
2026-06-21T03:56:28.5370308Z         "unit"
2026-06-21T03:56:28.5370380Z       ],
2026-06-21T03:56:28.5370455Z       "stages": {
2026-06-21T03:56:28.5370536Z         "doc": {
2026-06-21T03:56:28.5370628Z           "complete": false,
2026-06-21T03:56:28.5370723Z           "evidence": []
2026-06-21T03:56:28.5370798Z         },
2026-06-21T03:56:28.5370884Z         "impl": {
2026-06-21T03:56:28.5370962Z           "complete": true,
2026-06-21T03:56:28.5371043Z           "evidence": [
2026-06-21T03:56:28.5371122Z             {
2026-06-21T03:56:28.5371228Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5371315Z               "line": 264
2026-06-21T03:56:28.5371386Z             }
2026-06-21T03:56:28.5371470Z           ]
2026-06-21T03:56:28.5371550Z         },
2026-06-21T03:56:28.5371745Z         "int": {
2026-06-21T03:56:28.5371825Z           "complete": false,
2026-06-21T03:56:28.5371998Z           "evidence": []
2026-06-21T03:56:28.5372083Z         },
2026-06-21T03:56:28.5372154Z         "unit": {
2026-06-21T03:56:28.5372245Z           "complete": true,
2026-06-21T03:56:28.5372322Z           "evidence": [
2026-06-21T03:56:28.5372402Z             {
2026-06-21T03:56:28.5372502Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5372589Z               "line": 1094
2026-06-21T03:56:28.5372674Z             },
2026-06-21T03:56:28.5372750Z             {
2026-06-21T03:56:28.5372851Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5372933Z               "line": 1225
2026-06-21T03:56:28.5373017Z             },
2026-06-21T03:56:28.5373098Z             {
2026-06-21T03:56:28.5373194Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5373285Z               "line": 1227
2026-06-21T03:56:28.5373360Z             }
2026-06-21T03:56:28.5373452Z           ]
2026-06-21T03:56:28.5373529Z         }
2026-06-21T03:56:28.5373614Z       }
2026-06-21T03:56:28.5373694Z     },
2026-06-21T03:56:28.5373776Z     {
2026-06-21T03:56:28.5373877Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T03:56:28.5374132Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T03:56:28.5374218Z       "requiredStages": [
2026-06-21T03:56:28.5374293Z         "impl",
2026-06-21T03:56:28.5374378Z         "unit"
2026-06-21T03:56:28.5374454Z       ],
2026-06-21T03:56:28.5374531Z       "stages": {
2026-06-21T03:56:28.5374617Z         "doc": {
2026-06-21T03:56:28.5374692Z           "complete": true,
2026-06-21T03:56:28.5374779Z           "evidence": [
2026-06-21T03:56:28.5374855Z             {
2026-06-21T03:56:28.5374965Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5375050Z               "line": 139
2026-06-21T03:56:28.5375122Z             }
2026-06-21T03:56:28.5375213Z           ]
2026-06-21T03:56:28.5375294Z         },
2026-06-21T03:56:28.5375378Z         "impl": {
2026-06-21T03:56:28.5375466Z           "complete": true,
2026-06-21T03:56:28.5375556Z           "evidence": [
2026-06-21T03:56:28.5375637Z             {
2026-06-21T03:56:28.5375742Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T03:56:28.5375823Z               "line": 29
2026-06-21T03:56:28.5375904Z             },
2026-06-21T03:56:28.5375985Z             {
2026-06-21T03:56:28.5376091Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.5376180Z               "line": 101
2026-06-21T03:56:28.5376261Z             },
2026-06-21T03:56:28.5376347Z             {
2026-06-21T03:56:28.5376472Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5376552Z               "line": 30
2026-06-21T03:56:28.5376634Z             },
2026-06-21T03:56:28.5376706Z             {
2026-06-21T03:56:28.5376815Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5376904Z               "line": 48
2026-06-21T03:56:28.5376980Z             }
2026-06-21T03:56:28.5377062Z           ]
2026-06-21T03:56:28.5377143Z         },
2026-06-21T03:56:28.5377224Z         "int": {
2026-06-21T03:56:28.5377314Z           "complete": false,
2026-06-21T03:56:28.5377405Z           "evidence": []
2026-06-21T03:56:28.5377481Z         },
2026-06-21T03:56:28.5377567Z         "unit": {
2026-06-21T03:56:28.5377653Z           "complete": true,
2026-06-21T03:56:28.5377739Z           "evidence": [
2026-06-21T03:56:28.5377820Z             {
2026-06-21T03:56:28.5377933Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5378025Z               "line": 162
2026-06-21T03:56:28.5378101Z             }
2026-06-21T03:56:28.5378182Z           ]
2026-06-21T03:56:28.5378258Z         }
2026-06-21T03:56:28.5378331Z       }
2026-06-21T03:56:28.5378407Z     },
2026-06-21T03:56:28.5378482Z     {
2026-06-21T03:56:28.5378597Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T03:56:28.5379107Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T03:56:28.5379344Z       "requiredStages": [
2026-06-21T03:56:28.5379429Z         "doc",
2026-06-21T03:56:28.5379509Z         "impl",
2026-06-21T03:56:28.5379595Z         "unit"
2026-06-21T03:56:28.5379672Z       ],
2026-06-21T03:56:28.5379752Z       "stages": {
2026-06-21T03:56:28.5379828Z         "doc": {
2026-06-21T03:56:28.5379919Z           "complete": true,
2026-06-21T03:56:28.5380006Z           "evidence": [
2026-06-21T03:56:28.5380086Z             {
2026-06-21T03:56:28.5380186Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5380268Z               "line": 151
2026-06-21T03:56:28.5380344Z             }
2026-06-21T03:56:28.5380424Z           ]
2026-06-21T03:56:28.5380500Z         },
2026-06-21T03:56:28.5380582Z         "impl": {
2026-06-21T03:56:28.5380668Z           "complete": true,
2026-06-21T03:56:28.5380777Z           "evidence": [
2026-06-21T03:56:28.5380863Z             {
2026-06-21T03:56:28.5380983Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5381115Z               "line": 22
2026-06-21T03:56:28.5381203Z             }
2026-06-21T03:56:28.5381302Z           ]
2026-06-21T03:56:28.5381373Z         },
2026-06-21T03:56:28.5381459Z         "int": {
2026-06-21T03:56:28.5381551Z           "complete": false,
2026-06-21T03:56:28.5381631Z           "evidence": []
2026-06-21T03:56:28.5381712Z         },
2026-06-21T03:56:28.5381798Z         "unit": {
2026-06-21T03:56:28.5381890Z           "complete": true,
2026-06-21T03:56:28.5381974Z           "evidence": [
2026-06-21T03:56:28.5382059Z             {
2026-06-21T03:56:28.5382173Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5382259Z               "line": 298
2026-06-21T03:56:28.5382338Z             }
2026-06-21T03:56:28.5382419Z           ]
2026-06-21T03:56:28.5382505Z         }
2026-06-21T03:56:28.5382586Z       }
2026-06-21T03:56:28.5382676Z     },
2026-06-21T03:56:28.5382748Z     {
2026-06-21T03:56:28.5382854Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T03:56:28.5383292Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T03:56:28.5383387Z       "requiredStages": [
2026-06-21T03:56:28.5383469Z         "impl",
2026-06-21T03:56:28.5383553Z         "unit"
2026-06-21T03:56:28.5383635Z       ],
2026-06-21T03:56:28.5383720Z       "stages": {
2026-06-21T03:56:28.5383803Z         "doc": {
2026-06-21T03:56:28.5383882Z           "complete": true,
2026-06-21T03:56:28.5383963Z           "evidence": [
2026-06-21T03:56:28.5384045Z             {
2026-06-21T03:56:28.5384142Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5384225Z               "line": 145
2026-06-21T03:56:28.5384302Z             }
2026-06-21T03:56:28.5384385Z           ]
2026-06-21T03:56:28.5384466Z         },
2026-06-21T03:56:28.5384550Z         "impl": {
2026-06-21T03:56:28.5384630Z           "complete": true,
2026-06-21T03:56:28.5384711Z           "evidence": [
2026-06-21T03:56:28.5384806Z             {
2026-06-21T03:56:28.5384933Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:56:28.5385019Z               "line": 160
2026-06-21T03:56:28.5385096Z             },
2026-06-21T03:56:28.5385182Z             {
2026-06-21T03:56:28.5385309Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5385397Z               "line": 200
2026-06-21T03:56:28.5385472Z             },
2026-06-21T03:56:28.5385553Z             {
2026-06-21T03:56:28.5385673Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5385758Z               "line": 298
2026-06-21T03:56:28.5385839Z             },
2026-06-21T03:56:28.5385925Z             {
2026-06-21T03:56:28.5386036Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:56:28.5386130Z               "line": 20
2026-06-21T03:56:28.5386321Z             }
2026-06-21T03:56:28.5386411Z           ]
2026-06-21T03:56:28.5386483Z         },
2026-06-21T03:56:28.5386631Z         "int": {
2026-06-21T03:56:28.5386722Z           "complete": false,
2026-06-21T03:56:28.5386812Z           "evidence": []
2026-06-21T03:56:28.5386893Z         },
2026-06-21T03:56:28.5386975Z         "unit": {
2026-06-21T03:56:28.5387065Z           "complete": true,
2026-06-21T03:56:28.5387150Z           "evidence": [
2026-06-21T03:56:28.5387232Z             {
2026-06-21T03:56:28.5387361Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5387445Z               "line": 937
2026-06-21T03:56:28.5387530Z             },
2026-06-21T03:56:28.5387607Z             {
2026-06-21T03:56:28.5387732Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T03:56:28.5387822Z               "line": 88
2026-06-21T03:56:28.5387893Z             },
2026-06-21T03:56:28.5387980Z             {
2026-06-21T03:56:28.5388094Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5388188Z               "line": 851
2026-06-21T03:56:28.5388280Z             },
2026-06-21T03:56:28.5388366Z             {
2026-06-21T03:56:28.5388484Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5388566Z               "line": 870
2026-06-21T03:56:28.5388647Z             },
2026-06-21T03:56:28.5388728Z             {
2026-06-21T03:56:28.5388852Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5388924Z               "line": 279
2026-06-21T03:56:28.5389076Z             },
2026-06-21T03:56:28.5389157Z             {
2026-06-21T03:56:28.5389263Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:56:28.5389347Z               "line": 82
2026-06-21T03:56:28.5389424Z             },
2026-06-21T03:56:28.5389520Z             {
2026-06-21T03:56:28.5389620Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:56:28.5389709Z               "line": 99
2026-06-21T03:56:28.5389799Z             },
2026-06-21T03:56:28.5389881Z             {
2026-06-21T03:56:28.5389993Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T03:56:28.5390078Z               "line": 119
2026-06-21T03:56:28.5390160Z             }
2026-06-21T03:56:28.5390242Z           ]
2026-06-21T03:56:28.5390317Z         }
2026-06-21T03:56:28.5390397Z       }
2026-06-21T03:56:28.5390474Z     },
2026-06-21T03:56:28.5390556Z     {
2026-06-21T03:56:28.5390670Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T03:56:28.5391943Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T03:56:28.5392048Z       "requiredStages": [
2026-06-21T03:56:28.5392125Z         "doc",
2026-06-21T03:56:28.5392219Z         "impl",
2026-06-21T03:56:28.5392310Z         "unit"
2026-06-21T03:56:28.5392387Z       ],
2026-06-21T03:56:28.5392469Z       "stages": {
2026-06-21T03:56:28.5392558Z         "doc": {
2026-06-21T03:56:28.5392638Z           "complete": true,
2026-06-21T03:56:28.5392724Z           "evidence": [
2026-06-21T03:56:28.5392809Z             {
2026-06-21T03:56:28.5392907Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5392993Z               "line": 157
2026-06-21T03:56:28.5393065Z             }
2026-06-21T03:56:28.5393146Z           ]
2026-06-21T03:56:28.5393232Z         },
2026-06-21T03:56:28.5393317Z         "impl": {
2026-06-21T03:56:28.5393409Z           "complete": true,
2026-06-21T03:56:28.5393485Z           "evidence": [
2026-06-21T03:56:28.5393565Z             {
2026-06-21T03:56:28.5393686Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.5393889Z               "line": 137
2026-06-21T03:56:28.5393971Z             },
2026-06-21T03:56:28.5394053Z             {
2026-06-21T03:56:28.5394267Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5394358Z               "line": 564
2026-06-21T03:56:28.5394438Z             },
2026-06-21T03:56:28.5394519Z             {
2026-06-21T03:56:28.5394644Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5394730Z               "line": 571
2026-06-21T03:56:28.5394814Z             },
2026-06-21T03:56:28.5394896Z             {
2026-06-21T03:56:28.5395002Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5395091Z               "line": 227
2026-06-21T03:56:28.5395176Z             }
2026-06-21T03:56:28.5395257Z           ]
2026-06-21T03:56:28.5395338Z         },
2026-06-21T03:56:28.5395422Z         "int": {
2026-06-21T03:56:28.5395517Z           "complete": false,
2026-06-21T03:56:28.5395598Z           "evidence": []
2026-06-21T03:56:28.5395689Z         },
2026-06-21T03:56:28.5395774Z         "unit": {
2026-06-21T03:56:28.5395856Z           "complete": true,
2026-06-21T03:56:28.5395952Z           "evidence": [
2026-06-21T03:56:28.5396032Z             {
2026-06-21T03:56:28.5396151Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5396238Z               "line": 1622
2026-06-21T03:56:28.5396323Z             },
2026-06-21T03:56:28.5396404Z             {
2026-06-21T03:56:28.5396528Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5396615Z               "line": 1680
2026-06-21T03:56:28.5396690Z             },
2026-06-21T03:56:28.5396771Z             {
2026-06-21T03:56:28.5396881Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5396972Z               "line": 883
2026-06-21T03:56:28.5397053Z             }
2026-06-21T03:56:28.5397134Z           ]
2026-06-21T03:56:28.5397216Z         }
2026-06-21T03:56:28.5397296Z       }
2026-06-21T03:56:28.5397382Z     },
2026-06-21T03:56:28.5397458Z     {
2026-06-21T03:56:28.5397574Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T03:56:28.5397758Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T03:56:28.5397845Z       "requiredStages": [
2026-06-21T03:56:28.5397935Z         "impl",
2026-06-21T03:56:28.5398005Z         "unit"
2026-06-21T03:56:28.5398090Z       ],
2026-06-21T03:56:28.5398167Z       "stages": {
2026-06-21T03:56:28.5398254Z         "doc": {
2026-06-21T03:56:28.5398349Z           "complete": false,
2026-06-21T03:56:28.5398424Z           "evidence": []
2026-06-21T03:56:28.5398511Z         },
2026-06-21T03:56:28.5398592Z         "impl": {
2026-06-21T03:56:28.5398682Z           "complete": true,
2026-06-21T03:56:28.5398768Z           "evidence": [
2026-06-21T03:56:28.5398855Z             {
2026-06-21T03:56:28.5399030Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5399121Z               "line": 15
2026-06-21T03:56:28.5399202Z             },
2026-06-21T03:56:28.5399283Z             {
2026-06-21T03:56:28.5399407Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5399485Z               "line": 55
2026-06-21T03:56:28.5399569Z             },
2026-06-21T03:56:28.5399650Z             {
2026-06-21T03:56:28.5399761Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5399846Z               "line": 66
2026-06-21T03:56:28.5399917Z             },
2026-06-21T03:56:28.5399998Z             {
2026-06-21T03:56:28.5400110Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5400190Z               "line": 115
2026-06-21T03:56:28.5400270Z             },
2026-06-21T03:56:28.5400345Z             {
2026-06-21T03:56:28.5400450Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5400530Z               "line": 138
2026-06-21T03:56:28.5400610Z             }
2026-06-21T03:56:28.5400691Z           ]
2026-06-21T03:56:28.5400772Z         },
2026-06-21T03:56:28.5400967Z         "int": {
2026-06-21T03:56:28.5401054Z           "complete": false,
2026-06-21T03:56:28.5401131Z           "evidence": []
2026-06-21T03:56:28.5401310Z         },
2026-06-21T03:56:28.5401388Z         "unit": {
2026-06-21T03:56:28.5401469Z           "complete": true,
2026-06-21T03:56:28.5401564Z           "evidence": [
2026-06-21T03:56:28.5401650Z             {
2026-06-21T03:56:28.5401755Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5401836Z               "line": 363
2026-06-21T03:56:28.5401921Z             },
2026-06-21T03:56:28.5402008Z             {
2026-06-21T03:56:28.5402112Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5402198Z               "line": 369
2026-06-21T03:56:28.5402289Z             },
2026-06-21T03:56:28.5402370Z             {
2026-06-21T03:56:28.5402474Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5402560Z               "line": 383
2026-06-21T03:56:28.5402638Z             },
2026-06-21T03:56:28.5402723Z             {
2026-06-21T03:56:28.5402837Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5402928Z               "line": 392
2026-06-21T03:56:28.5403005Z             },
2026-06-21T03:56:28.5403085Z             {
2026-06-21T03:56:28.5403193Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5403274Z               "line": 195
2026-06-21T03:56:28.5403355Z             },
2026-06-21T03:56:28.5403444Z             {
2026-06-21T03:56:28.5403558Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5403639Z               "line": 208
2026-06-21T03:56:28.5403721Z             },
2026-06-21T03:56:28.5403801Z             {
2026-06-21T03:56:28.5403916Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5404012Z               "line": 271
2026-06-21T03:56:28.5404093Z             },
2026-06-21T03:56:28.5404178Z             {
2026-06-21T03:56:28.5404279Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5404364Z               "line": 290
2026-06-21T03:56:28.5404445Z             },
2026-06-21T03:56:28.5404536Z             {
2026-06-21T03:56:28.5404646Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5404727Z               "line": 319
2026-06-21T03:56:28.5404812Z             }
2026-06-21T03:56:28.5404894Z           ]
2026-06-21T03:56:28.5404980Z         }
2026-06-21T03:56:28.5405055Z       }
2026-06-21T03:56:28.5405137Z     },
2026-06-21T03:56:28.5405214Z     {
2026-06-21T03:56:28.5405318Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T03:56:28.5405577Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T03:56:28.5405656Z       "requiredStages": [
2026-06-21T03:56:28.5405741Z         "impl",
2026-06-21T03:56:28.5405817Z         "unit",
2026-06-21T03:56:28.5405903Z         "int"
2026-06-21T03:56:28.5405983Z       ],
2026-06-21T03:56:28.5406063Z       "stages": {
2026-06-21T03:56:28.5406154Z         "doc": {
2026-06-21T03:56:28.5406235Z           "complete": false,
2026-06-21T03:56:28.5406326Z           "evidence": []
2026-06-21T03:56:28.5406392Z         },
2026-06-21T03:56:28.5406468Z         "impl": {
2026-06-21T03:56:28.5409181Z           "complete": true,
2026-06-21T03:56:28.5409295Z           "evidence": [
2026-06-21T03:56:28.5409372Z             {
2026-06-21T03:56:28.5409496Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5409581Z               "line": 474
2026-06-21T03:56:28.5409662Z             },
2026-06-21T03:56:28.5409744Z             {
2026-06-21T03:56:28.5409848Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5409934Z               "line": 916
2026-06-21T03:56:28.5410016Z             },
2026-06-21T03:56:28.5410087Z             {
2026-06-21T03:56:28.5410205Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5410287Z               "line": 961
2026-06-21T03:56:28.5410369Z             },
2026-06-21T03:56:28.5410592Z             {
2026-06-21T03:56:28.5410698Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.5410881Z               "line": 986
2026-06-21T03:56:28.5410958Z             },
2026-06-21T03:56:28.5411034Z             {
2026-06-21T03:56:28.5411151Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5411232Z               "line": 1626
2026-06-21T03:56:28.5411319Z             },
2026-06-21T03:56:28.5411395Z             {
2026-06-21T03:56:28.5411509Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5411590Z               "line": 1871
2026-06-21T03:56:28.5411672Z             },
2026-06-21T03:56:28.5411752Z             {
2026-06-21T03:56:28.5411861Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5411949Z               "line": 2002
2026-06-21T03:56:28.5412029Z             },
2026-06-21T03:56:28.5412109Z             {
2026-06-21T03:56:28.5412210Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5412296Z               "line": 2050
2026-06-21T03:56:28.5412377Z             },
2026-06-21T03:56:28.5412467Z             {
2026-06-21T03:56:28.5412573Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5412658Z               "line": 46
2026-06-21T03:56:28.5412730Z             },
2026-06-21T03:56:28.5412801Z             {
2026-06-21T03:56:28.5412917Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5413001Z               "line": 200
2026-06-21T03:56:28.5413087Z             },
2026-06-21T03:56:28.5413164Z             {
2026-06-21T03:56:28.5413269Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5413349Z               "line": 132
2026-06-21T03:56:28.5413426Z             },
2026-06-21T03:56:28.5413512Z             {
2026-06-21T03:56:28.5413622Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5413706Z               "line": 137
2026-06-21T03:56:28.5413787Z             },
2026-06-21T03:56:28.5413868Z             {
2026-06-21T03:56:28.5413985Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5414075Z               "line": 183
2026-06-21T03:56:28.5414157Z             }
2026-06-21T03:56:28.5414239Z           ]
2026-06-21T03:56:28.5414314Z         },
2026-06-21T03:56:28.5414394Z         "int": {
2026-06-21T03:56:28.5414486Z           "complete": true,
2026-06-21T03:56:28.5414572Z           "evidence": [
2026-06-21T03:56:28.5414648Z             {
2026-06-21T03:56:28.5414786Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T03:56:28.5414873Z               "line": 27
2026-06-21T03:56:28.5414954Z             },
2026-06-21T03:56:28.5415033Z             {
2026-06-21T03:56:28.5415154Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T03:56:28.5415239Z               "line": 148
2026-06-21T03:56:28.5415320Z             },
2026-06-21T03:56:28.5415396Z             {
2026-06-21T03:56:28.5415507Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T03:56:28.5415601Z               "line": 200
2026-06-21T03:56:28.5415677Z             }
2026-06-21T03:56:28.5415755Z           ]
2026-06-21T03:56:28.5415836Z         },
2026-06-21T03:56:28.5415920Z         "unit": {
2026-06-21T03:56:28.5416011Z           "complete": true,
2026-06-21T03:56:28.5416103Z           "evidence": [
2026-06-21T03:56:28.5416184Z             {
2026-06-21T03:56:28.5416301Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5416387Z               "line": 366
2026-06-21T03:56:28.5416468Z             },
2026-06-21T03:56:28.5416543Z             {
2026-06-21T03:56:28.5416656Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5416743Z               "line": 398
2026-06-21T03:56:28.5416814Z             },
2026-06-21T03:56:28.5416895Z             {
2026-06-21T03:56:28.5417000Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T03:56:28.5417077Z               "line": 419
2026-06-21T03:56:28.5417261Z             },
2026-06-21T03:56:28.5417343Z             {
2026-06-21T03:56:28.5417458Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5417614Z               "line": 628
2026-06-21T03:56:28.5417701Z             },
2026-06-21T03:56:28.5417778Z             {
2026-06-21T03:56:28.5417896Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:56:28.5417972Z               "line": 289
2026-06-21T03:56:28.5418050Z             },
2026-06-21T03:56:28.5418125Z             {
2026-06-21T03:56:28.5418230Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:56:28.5418322Z               "line": 230
2026-06-21T03:56:28.5418398Z             },
2026-06-21T03:56:28.5418482Z             {
2026-06-21T03:56:28.5418588Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5418665Z               "line": 526
2026-06-21T03:56:28.5418750Z             },
2026-06-21T03:56:28.5418826Z             {
2026-06-21T03:56:28.5418932Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5419112Z               "line": 556
2026-06-21T03:56:28.5419202Z             }
2026-06-21T03:56:28.5419269Z           ]
2026-06-21T03:56:28.5419350Z         }
2026-06-21T03:56:28.5419431Z       }
2026-06-21T03:56:28.5419507Z     },
2026-06-21T03:56:28.5419588Z     {
2026-06-21T03:56:28.5419693Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T03:56:28.5421366Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T03:56:28.5421470Z       "requiredStages": [
2026-06-21T03:56:28.5421552Z         "doc",
2026-06-21T03:56:28.5421631Z         "impl",
2026-06-21T03:56:28.5421707Z         "unit"
2026-06-21T03:56:28.5421787Z       ],
2026-06-21T03:56:28.5421874Z       "stages": {
2026-06-21T03:56:28.5421951Z         "doc": {
2026-06-21T03:56:28.5422031Z           "complete": true,
2026-06-21T03:56:28.5422111Z           "evidence": [
2026-06-21T03:56:28.5422193Z             {
2026-06-21T03:56:28.5422298Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5422383Z               "line": 314
2026-06-21T03:56:28.5422460Z             }
2026-06-21T03:56:28.5422542Z           ]
2026-06-21T03:56:28.5422623Z         },
2026-06-21T03:56:28.5422703Z         "impl": {
2026-06-21T03:56:28.5422780Z           "complete": true,
2026-06-21T03:56:28.5422870Z           "evidence": [
2026-06-21T03:56:28.5422951Z             {
2026-06-21T03:56:28.5423084Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:56:28.5423176Z               "line": 33
2026-06-21T03:56:28.5423247Z             },
2026-06-21T03:56:28.5423332Z             {
2026-06-21T03:56:28.5423467Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:56:28.5423552Z               "line": 39
2026-06-21T03:56:28.5423633Z             }
2026-06-21T03:56:28.5423719Z           ]
2026-06-21T03:56:28.5423797Z         },
2026-06-21T03:56:28.5423876Z         "int": {
2026-06-21T03:56:28.5423962Z           "complete": false,
2026-06-21T03:56:28.5424044Z           "evidence": []
2026-06-21T03:56:28.5424121Z         },
2026-06-21T03:56:28.5424205Z         "unit": {
2026-06-21T03:56:28.5424290Z           "complete": true,
2026-06-21T03:56:28.5424371Z           "evidence": [
2026-06-21T03:56:28.5424452Z             {
2026-06-21T03:56:28.5424569Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T03:56:28.5424654Z               "line": 95
2026-06-21T03:56:28.5424731Z             }
2026-06-21T03:56:28.5424808Z           ]
2026-06-21T03:56:28.5424993Z         }
2026-06-21T03:56:28.5425075Z       }
2026-06-21T03:56:28.5425156Z     },
2026-06-21T03:56:28.5425322Z     {
2026-06-21T03:56:28.5425423Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T03:56:28.5427789Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T03:56:28.5427894Z       "requiredStages": [
2026-06-21T03:56:28.5427985Z         "impl",
2026-06-21T03:56:28.5428066Z         "unit"
2026-06-21T03:56:28.5428141Z       ],
2026-06-21T03:56:28.5428223Z       "stages": {
2026-06-21T03:56:28.5428305Z         "doc": {
2026-06-21T03:56:28.5428394Z           "complete": false,
2026-06-21T03:56:28.5428475Z           "evidence": []
2026-06-21T03:56:28.5428557Z         },
2026-06-21T03:56:28.5428629Z         "impl": {
2026-06-21T03:56:28.5428719Z           "complete": true,
2026-06-21T03:56:28.5428809Z           "evidence": [
2026-06-21T03:56:28.5428887Z             {
2026-06-21T03:56:28.5429105Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5429192Z               "line": 488
2026-06-21T03:56:28.5429268Z             }
2026-06-21T03:56:28.5429371Z           ]
2026-06-21T03:56:28.5429448Z         },
2026-06-21T03:56:28.5429531Z         "int": {
2026-06-21T03:56:28.5429625Z           "complete": false,
2026-06-21T03:56:28.5429714Z           "evidence": []
2026-06-21T03:56:28.5429795Z         },
2026-06-21T03:56:28.5429872Z         "unit": {
2026-06-21T03:56:28.5429968Z           "complete": true,
2026-06-21T03:56:28.5430047Z           "evidence": [
2026-06-21T03:56:28.5430128Z             {
2026-06-21T03:56:28.5430249Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5430339Z               "line": 1466
2026-06-21T03:56:28.5430420Z             }
2026-06-21T03:56:28.5430497Z           ]
2026-06-21T03:56:28.5430573Z         }
2026-06-21T03:56:28.5430654Z       }
2026-06-21T03:56:28.5430720Z     },
2026-06-21T03:56:28.5430797Z     {
2026-06-21T03:56:28.5430888Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T03:56:28.5433010Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T03:56:28.5433116Z       "requiredStages": [
2026-06-21T03:56:28.5433197Z         "unit"
2026-06-21T03:56:28.5433277Z       ],
2026-06-21T03:56:28.5433364Z       "stages": {
2026-06-21T03:56:28.5433445Z         "doc": {
2026-06-21T03:56:28.5433526Z           "complete": false,
2026-06-21T03:56:28.5433616Z           "evidence": []
2026-06-21T03:56:28.5433693Z         },
2026-06-21T03:56:28.5433769Z         "impl": {
2026-06-21T03:56:28.5433859Z           "complete": true,
2026-06-21T03:56:28.5434061Z           "evidence": [
2026-06-21T03:56:28.5434140Z             {
2026-06-21T03:56:28.5434241Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5434413Z               "line": 3520
2026-06-21T03:56:28.5434493Z             },
2026-06-21T03:56:28.5434580Z             {
2026-06-21T03:56:28.5434671Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5434751Z               "line": 3572
2026-06-21T03:56:28.5434826Z             },
2026-06-21T03:56:28.5434907Z             {
2026-06-21T03:56:28.5434993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5435078Z               "line": 3617
2026-06-21T03:56:28.5435153Z             },
2026-06-21T03:56:28.5435233Z             {
2026-06-21T03:56:28.5435339Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5435425Z               "line": 92
2026-06-21T03:56:28.5435501Z             },
2026-06-21T03:56:28.5435587Z             {
2026-06-21T03:56:28.5435688Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5435787Z               "line": 148
2026-06-21T03:56:28.5435863Z             },
2026-06-21T03:56:28.5435955Z             {
2026-06-21T03:56:28.5436059Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5436140Z               "line": 192
2026-06-21T03:56:28.5436217Z             },
2026-06-21T03:56:28.5436298Z             {
2026-06-21T03:56:28.5436398Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5436474Z               "line": 200
2026-06-21T03:56:28.5436555Z             },
2026-06-21T03:56:28.5436636Z             {
2026-06-21T03:56:28.5436731Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5436812Z               "line": 211
2026-06-21T03:56:28.5436885Z             },
2026-06-21T03:56:28.5436970Z             {
2026-06-21T03:56:28.5437065Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5437151Z               "line": 265
2026-06-21T03:56:28.5437238Z             },
2026-06-21T03:56:28.5437313Z             {
2026-06-21T03:56:28.5437421Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5437512Z               "line": 279
2026-06-21T03:56:28.5437583Z             }
2026-06-21T03:56:28.5437663Z           ]
2026-06-21T03:56:28.5437738Z         },
2026-06-21T03:56:28.5437824Z         "int": {
2026-06-21T03:56:28.5437911Z           "complete": false,
2026-06-21T03:56:28.5437997Z           "evidence": []
2026-06-21T03:56:28.5438067Z         },
2026-06-21T03:56:28.5438153Z         "unit": {
2026-06-21T03:56:28.5438240Z           "complete": true,
2026-06-21T03:56:28.5438321Z           "evidence": [
2026-06-21T03:56:28.5438405Z             {
2026-06-21T03:56:28.5438498Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5438588Z               "line": 419
2026-06-21T03:56:28.5438673Z             },
2026-06-21T03:56:28.5438749Z             {
2026-06-21T03:56:28.5438850Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5438931Z               "line": 470
2026-06-21T03:56:28.5439093Z             },
2026-06-21T03:56:28.5439170Z             {
2026-06-21T03:56:28.5439284Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5439364Z               "line": 499
2026-06-21T03:56:28.5439447Z             },
2026-06-21T03:56:28.5439527Z             {
2026-06-21T03:56:28.5439627Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5439708Z               "line": 526
2026-06-21T03:56:28.5439790Z             }
2026-06-21T03:56:28.5439875Z           ]
2026-06-21T03:56:28.5439951Z         }
2026-06-21T03:56:28.5440033Z       }
2026-06-21T03:56:28.5440110Z     },
2026-06-21T03:56:28.5440195Z     {
2026-06-21T03:56:28.5440298Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T03:56:28.5440466Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T03:56:28.5440556Z       "requiredStages": [
2026-06-21T03:56:28.5440627Z         "impl",
2026-06-21T03:56:28.5440819Z         "unit"
2026-06-21T03:56:28.5440890Z       ],
2026-06-21T03:56:28.5440960Z       "stages": {
2026-06-21T03:56:28.5441143Z         "doc": {
2026-06-21T03:56:28.5441228Z           "complete": false,
2026-06-21T03:56:28.5441319Z           "evidence": []
2026-06-21T03:56:28.5441391Z         },
2026-06-21T03:56:28.5441472Z         "impl": {
2026-06-21T03:56:28.5441548Z           "complete": true,
2026-06-21T03:56:28.5441633Z           "evidence": [
2026-06-21T03:56:28.5441720Z             {
2026-06-21T03:56:28.5441838Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5441924Z               "line": 62
2026-06-21T03:56:28.5442002Z             },
2026-06-21T03:56:28.5442082Z             {
2026-06-21T03:56:28.5442206Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5442287Z               "line": 71
2026-06-21T03:56:28.5442364Z             },
2026-06-21T03:56:28.5442430Z             {
2026-06-21T03:56:28.5442553Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5442634Z               "line": 80
2026-06-21T03:56:28.5442720Z             },
2026-06-21T03:56:28.5442808Z             {
2026-06-21T03:56:28.5442921Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5443013Z               "line": 88
2026-06-21T03:56:28.5443086Z             },
2026-06-21T03:56:28.5443165Z             {
2026-06-21T03:56:28.5443270Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5443352Z               "line": 33
2026-06-21T03:56:28.5443438Z             },
2026-06-21T03:56:28.5443513Z             {
2026-06-21T03:56:28.5443619Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5443704Z               "line": 65
2026-06-21T03:56:28.5443785Z             },
2026-06-21T03:56:28.5443861Z             {
2026-06-21T03:56:28.5443963Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5444043Z               "line": 74
2026-06-21T03:56:28.5444123Z             },
2026-06-21T03:56:28.5444204Z             {
2026-06-21T03:56:28.5444301Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5444396Z               "line": 93
2026-06-21T03:56:28.5444472Z             },
2026-06-21T03:56:28.5444549Z             {
2026-06-21T03:56:28.5444654Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5444734Z               "line": 102
2026-06-21T03:56:28.5444815Z             },
2026-06-21T03:56:28.5444892Z             {
2026-06-21T03:56:28.5444996Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5445078Z               "line": 111
2026-06-21T03:56:28.5445154Z             },
2026-06-21T03:56:28.5445236Z             {
2026-06-21T03:56:28.5445339Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5445425Z               "line": 122
2026-06-21T03:56:28.5445501Z             },
2026-06-21T03:56:28.5445582Z             {
2026-06-21T03:56:28.5445689Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5445775Z               "line": 140
2026-06-21T03:56:28.5445856Z             },
2026-06-21T03:56:28.5445923Z             {
2026-06-21T03:56:28.5446032Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5446123Z               "line": 149
2026-06-21T03:56:28.5446205Z             },
2026-06-21T03:56:28.5446286Z             {
2026-06-21T03:56:28.5446399Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5446486Z               "line": 158
2026-06-21T03:56:28.5446562Z             },
2026-06-21T03:56:28.5446643Z             {
2026-06-21T03:56:28.5446743Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5446830Z               "line": 169
2026-06-21T03:56:28.5446910Z             },
2026-06-21T03:56:28.5446986Z             {
2026-06-21T03:56:28.5447096Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5447183Z               "line": 177
2026-06-21T03:56:28.5447267Z             },
2026-06-21T03:56:28.5447426Z             {
2026-06-21T03:56:28.5447530Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5447687Z               "line": 186
2026-06-21T03:56:28.5447769Z             },
2026-06-21T03:56:28.5447845Z             {
2026-06-21T03:56:28.5447958Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5448043Z               "line": 195
2026-06-21T03:56:28.5448120Z             },
2026-06-21T03:56:28.5448195Z             {
2026-06-21T03:56:28.5448304Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5448385Z               "line": 204
2026-06-21T03:56:28.5448466Z             },
2026-06-21T03:56:28.5448538Z             {
2026-06-21T03:56:28.5448651Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5448728Z               "line": 216
2026-06-21T03:56:28.5448810Z             },
2026-06-21T03:56:28.5448890Z             {
2026-06-21T03:56:28.5449068Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5449172Z               "line": 223
2026-06-21T03:56:28.5449243Z             },
2026-06-21T03:56:28.5449329Z             {
2026-06-21T03:56:28.5449434Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5449524Z               "line": 232
2026-06-21T03:56:28.5449600Z             },
2026-06-21T03:56:28.5449682Z             {
2026-06-21T03:56:28.5449792Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5449873Z               "line": 239
2026-06-21T03:56:28.5449948Z             },
2026-06-21T03:56:28.5450022Z             {
2026-06-21T03:56:28.5450125Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5450211Z               "line": 306
2026-06-21T03:56:28.5450288Z             },
2026-06-21T03:56:28.5450369Z             {
2026-06-21T03:56:28.5450468Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5450559Z               "line": 318
2026-06-21T03:56:28.5450641Z             },
2026-06-21T03:56:28.5450717Z             {
2026-06-21T03:56:28.5450835Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5450925Z               "line": 405
2026-06-21T03:56:28.5451006Z             }
2026-06-21T03:56:28.5451088Z           ]
2026-06-21T03:56:28.5451164Z         },
2026-06-21T03:56:28.5451245Z         "int": {
2026-06-21T03:56:28.5451331Z           "complete": false,
2026-06-21T03:56:28.5451417Z           "evidence": []
2026-06-21T03:56:28.5451497Z         },
2026-06-21T03:56:28.5451583Z         "unit": {
2026-06-21T03:56:28.5451670Z           "complete": true,
2026-06-21T03:56:28.5451760Z           "evidence": [
2026-06-21T03:56:28.5451840Z             {
2026-06-21T03:56:28.5451946Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5452032Z               "line": 487
2026-06-21T03:56:28.5452113Z             },
2026-06-21T03:56:28.5452198Z             {
2026-06-21T03:56:28.5452299Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5452393Z               "line": 528
2026-06-21T03:56:28.5452475Z             },
2026-06-21T03:56:28.5452557Z             {
2026-06-21T03:56:28.5452676Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5452751Z               "line": 541
2026-06-21T03:56:28.5452828Z             },
2026-06-21T03:56:28.5452910Z             {
2026-06-21T03:56:28.5453018Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5453098Z               "line": 627
2026-06-21T03:56:28.5453179Z             }
2026-06-21T03:56:28.5453260Z           ]
2026-06-21T03:56:28.5453340Z         }
2026-06-21T03:56:28.5453420Z       }
2026-06-21T03:56:28.5453491Z     },
2026-06-21T03:56:28.5453568Z     {
2026-06-21T03:56:28.5453669Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T03:56:28.5453855Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T03:56:28.5453940Z       "requiredStages": [
2026-06-21T03:56:28.5454012Z         "impl",
2026-06-21T03:56:28.5454198Z         "unit"
2026-06-21T03:56:28.5454283Z       ],
2026-06-21T03:56:28.5454369Z       "stages": {
2026-06-21T03:56:28.5454527Z         "doc": {
2026-06-21T03:56:28.5454608Z           "complete": false,
2026-06-21T03:56:28.5454693Z           "evidence": []
2026-06-21T03:56:28.5454770Z         },
2026-06-21T03:56:28.5454856Z         "impl": {
2026-06-21T03:56:28.5454946Z           "complete": true,
2026-06-21T03:56:28.5455032Z           "evidence": [
2026-06-21T03:56:28.5455114Z             {
2026-06-21T03:56:28.5455219Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5455304Z               "line": 175
2026-06-21T03:56:28.5455390Z             },
2026-06-21T03:56:28.5455467Z             {
2026-06-21T03:56:28.5455571Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5455657Z               "line": 171
2026-06-21T03:56:28.5455739Z             }
2026-06-21T03:56:28.5455820Z           ]
2026-06-21T03:56:28.5455900Z         },
2026-06-21T03:56:28.5455980Z         "int": {
2026-06-21T03:56:28.5456080Z           "complete": false,
2026-06-21T03:56:28.5456166Z           "evidence": []
2026-06-21T03:56:28.5456249Z         },
2026-06-21T03:56:28.5456335Z         "unit": {
2026-06-21T03:56:28.5456421Z           "complete": true,
2026-06-21T03:56:28.5456512Z           "evidence": [
2026-06-21T03:56:28.5456588Z             {
2026-06-21T03:56:28.5456702Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5456789Z               "line": 297
2026-06-21T03:56:28.5456875Z             },
2026-06-21T03:56:28.5456950Z             {
2026-06-21T03:56:28.5457061Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5457136Z               "line": 836
2026-06-21T03:56:28.5457217Z             },
2026-06-21T03:56:28.5457298Z             {
2026-06-21T03:56:28.5457409Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5457498Z               "line": 849
2026-06-21T03:56:28.5457584Z             }
2026-06-21T03:56:28.5457671Z           ]
2026-06-21T03:56:28.5457752Z         }
2026-06-21T03:56:28.5457832Z       }
2026-06-21T03:56:28.5457904Z     },
2026-06-21T03:56:28.5457991Z     {
2026-06-21T03:56:28.5458104Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T03:56:28.5458228Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T03:56:28.5458320Z       "requiredStages": [
2026-06-21T03:56:28.5458401Z         "impl",
2026-06-21T03:56:28.5458480Z         "unit"
2026-06-21T03:56:28.5458556Z       ],
2026-06-21T03:56:28.5458637Z       "stages": {
2026-06-21T03:56:28.5458714Z         "doc": {
2026-06-21T03:56:28.5458806Z           "complete": false,
2026-06-21T03:56:28.5458892Z           "evidence": []
2026-06-21T03:56:28.5459055Z         },
2026-06-21T03:56:28.5459135Z         "impl": {
2026-06-21T03:56:28.5459225Z           "complete": true,
2026-06-21T03:56:28.5459308Z           "evidence": [
2026-06-21T03:56:28.5459389Z             {
2026-06-21T03:56:28.5459502Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5459598Z               "line": 116
2026-06-21T03:56:28.5459679Z             },
2026-06-21T03:56:28.5459770Z             {
2026-06-21T03:56:28.5459894Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.5459971Z               "line": 507
2026-06-21T03:56:28.5460061Z             }
2026-06-21T03:56:28.5460141Z           ]
2026-06-21T03:56:28.5460218Z         },
2026-06-21T03:56:28.5460300Z         "int": {
2026-06-21T03:56:28.5460390Z           "complete": false,
2026-06-21T03:56:28.5460485Z           "evidence": []
2026-06-21T03:56:28.5460552Z         },
2026-06-21T03:56:28.5460638Z         "unit": {
2026-06-21T03:56:28.5460723Z           "complete": true,
2026-06-21T03:56:28.5460795Z           "evidence": [
2026-06-21T03:56:28.5460877Z             {
2026-06-21T03:56:28.5460986Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.5461066Z               "line": 541
2026-06-21T03:56:28.5461148Z             }
2026-06-21T03:56:28.5461338Z           ]
2026-06-21T03:56:28.5461414Z         }
2026-06-21T03:56:28.5461495Z       }
2026-06-21T03:56:28.5461667Z     },
2026-06-21T03:56:28.5461747Z     {
2026-06-21T03:56:28.5461867Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T03:56:28.5462024Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T03:56:28.5462114Z       "requiredStages": [
2026-06-21T03:56:28.5462197Z         "impl",
2026-06-21T03:56:28.5462277Z         "unit"
2026-06-21T03:56:28.5462358Z       ],
2026-06-21T03:56:28.5462439Z       "stages": {
2026-06-21T03:56:28.5462521Z         "doc": {
2026-06-21T03:56:28.5462611Z           "complete": false,
2026-06-21T03:56:28.5462701Z           "evidence": []
2026-06-21T03:56:28.5462787Z         },
2026-06-21T03:56:28.5462864Z         "impl": {
2026-06-21T03:56:28.5462954Z           "complete": true,
2026-06-21T03:56:28.5463040Z           "evidence": [
2026-06-21T03:56:28.5463122Z             {
2026-06-21T03:56:28.5463240Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5463340Z               "line": 552
2026-06-21T03:56:28.5463431Z             },
2026-06-21T03:56:28.5463513Z             {
2026-06-21T03:56:28.5463630Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5463706Z               "line": 28
2026-06-21T03:56:28.5463792Z             }
2026-06-21T03:56:28.5463868Z           ]
2026-06-21T03:56:28.5463947Z         },
2026-06-21T03:56:28.5464028Z         "int": {
2026-06-21T03:56:28.5464110Z           "complete": false,
2026-06-21T03:56:28.5464206Z           "evidence": []
2026-06-21T03:56:28.5464276Z         },
2026-06-21T03:56:28.5464352Z         "unit": {
2026-06-21T03:56:28.5464438Z           "complete": true,
2026-06-21T03:56:28.5464515Z           "evidence": [
2026-06-21T03:56:28.5464591Z             {
2026-06-21T03:56:28.5464695Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5464782Z               "line": 229
2026-06-21T03:56:28.5464858Z             }
2026-06-21T03:56:28.5464943Z           ]
2026-06-21T03:56:28.5465015Z         }
2026-06-21T03:56:28.5465097Z       }
2026-06-21T03:56:28.5465177Z     },
2026-06-21T03:56:28.5465258Z     {
2026-06-21T03:56:28.5465374Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T03:56:28.5465497Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T03:56:28.5465592Z       "requiredStages": [],
2026-06-21T03:56:28.5465674Z       "stages": {
2026-06-21T03:56:28.5465760Z         "doc": {
2026-06-21T03:56:28.5465849Z           "complete": false,
2026-06-21T03:56:28.5465930Z           "evidence": []
2026-06-21T03:56:28.5466042Z         },
2026-06-21T03:56:28.5466136Z         "impl": {
2026-06-21T03:56:28.5466250Z           "complete": false,
2026-06-21T03:56:28.5466351Z           "evidence": []
2026-06-21T03:56:28.5466437Z         },
2026-06-21T03:56:28.5466521Z         "int": {
2026-06-21T03:56:28.5466601Z           "complete": false,
2026-06-21T03:56:28.5466688Z           "evidence": []
2026-06-21T03:56:28.5466772Z         },
2026-06-21T03:56:28.5466852Z         "unit": {
2026-06-21T03:56:28.5466938Z           "complete": false,
2026-06-21T03:56:28.5467030Z           "evidence": []
2026-06-21T03:56:28.5467106Z         }
2026-06-21T03:56:28.5467186Z       }
2026-06-21T03:56:28.5467267Z     },
2026-06-21T03:56:28.5467340Z     {
2026-06-21T03:56:28.5467449Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T03:56:28.5467587Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T03:56:28.5467678Z       "requiredStages": [
2026-06-21T03:56:28.5467759Z         "impl",
2026-06-21T03:56:28.5467834Z         "unit"
2026-06-21T03:56:28.5467916Z       ],
2026-06-21T03:56:28.5467988Z       "stages": {
2026-06-21T03:56:28.5468068Z         "doc": {
2026-06-21T03:56:28.5468149Z           "complete": false,
2026-06-21T03:56:28.5468236Z           "evidence": []
2026-06-21T03:56:28.5468317Z         },
2026-06-21T03:56:28.5468397Z         "impl": {
2026-06-21T03:56:28.5468493Z           "complete": true,
2026-06-21T03:56:28.5468660Z           "evidence": [
2026-06-21T03:56:28.5468740Z             {
2026-06-21T03:56:28.5468933Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T03:56:28.5469078Z               "line": 19
2026-06-21T03:56:28.5469154Z             },
2026-06-21T03:56:28.5469231Z             {
2026-06-21T03:56:28.5469357Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5469448Z               "line": 463
2026-06-21T03:56:28.5469529Z             },
2026-06-21T03:56:28.5469606Z             {
2026-06-21T03:56:28.5469724Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5469810Z               "line": 499
2026-06-21T03:56:28.5469888Z             },
2026-06-21T03:56:28.5469968Z             {
2026-06-21T03:56:28.5470077Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5470159Z               "line": 547
2026-06-21T03:56:28.5470240Z             },
2026-06-21T03:56:28.5470325Z             {
2026-06-21T03:56:28.5470449Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.5470531Z               "line": 15
2026-06-21T03:56:28.5470611Z             },
2026-06-21T03:56:28.5470696Z             {
2026-06-21T03:56:28.5470803Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.5470888Z               "line": 48
2026-06-21T03:56:28.5470979Z             },
2026-06-21T03:56:28.5471050Z             {
2026-06-21T03:56:28.5471156Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.5471236Z               "line": 119
2026-06-21T03:56:28.5471317Z             },
2026-06-21T03:56:28.5471388Z             {
2026-06-21T03:56:28.5471490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5471574Z               "line": 3948
2026-06-21T03:56:28.5471660Z             }
2026-06-21T03:56:28.5471738Z           ]
2026-06-21T03:56:28.5471824Z         },
2026-06-21T03:56:28.5471893Z         "int": {
2026-06-21T03:56:28.5471979Z           "complete": false,
2026-06-21T03:56:28.5472060Z           "evidence": []
2026-06-21T03:56:28.5472146Z         },
2026-06-21T03:56:28.5472241Z         "unit": {
2026-06-21T03:56:28.5472322Z           "complete": true,
2026-06-21T03:56:28.5472413Z           "evidence": [
2026-06-21T03:56:28.5472485Z             {
2026-06-21T03:56:28.5472603Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5472689Z               "line": 765
2026-06-21T03:56:28.5472771Z             },
2026-06-21T03:56:28.5472857Z             {
2026-06-21T03:56:28.5472966Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.5473047Z               "line": 165
2026-06-21T03:56:28.5473133Z             },
2026-06-21T03:56:28.5473214Z             {
2026-06-21T03:56:28.5473323Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T03:56:28.5473401Z               "line": 175
2026-06-21T03:56:28.5473485Z             }
2026-06-21T03:56:28.5473566Z           ]
2026-06-21T03:56:28.5473653Z         }
2026-06-21T03:56:28.5473739Z       }
2026-06-21T03:56:28.5473819Z     },
2026-06-21T03:56:28.5476287Z     {
2026-06-21T03:56:28.5476429Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T03:56:28.5477342Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T03:56:28.5477436Z       "requiredStages": [
2026-06-21T03:56:28.5477518Z         "impl",
2026-06-21T03:56:28.5477600Z         "unit"
2026-06-21T03:56:28.5477680Z       ],
2026-06-21T03:56:28.5477755Z       "stages": {
2026-06-21T03:56:28.5477827Z         "doc": {
2026-06-21T03:56:28.5477914Z           "complete": false,
2026-06-21T03:56:28.5477995Z           "evidence": []
2026-06-21T03:56:28.5478079Z         },
2026-06-21T03:56:28.5478157Z         "impl": {
2026-06-21T03:56:28.5478252Z           "complete": true,
2026-06-21T03:56:28.5478476Z           "evidence": [
2026-06-21T03:56:28.5478553Z             {
2026-06-21T03:56:28.5478757Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5478839Z               "line": 192
2026-06-21T03:56:28.5478915Z             },
2026-06-21T03:56:28.5479082Z             {
2026-06-21T03:56:28.5479197Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5479276Z               "line": 279
2026-06-21T03:56:28.5479358Z             }
2026-06-21T03:56:28.5479436Z           ]
2026-06-21T03:56:28.5479516Z         },
2026-06-21T03:56:28.5479605Z         "int": {
2026-06-21T03:56:28.5479686Z           "complete": false,
2026-06-21T03:56:28.5479772Z           "evidence": []
2026-06-21T03:56:28.5479853Z         },
2026-06-21T03:56:28.5479932Z         "unit": {
2026-06-21T03:56:28.5480022Z           "complete": true,
2026-06-21T03:56:28.5480103Z           "evidence": [
2026-06-21T03:56:28.5480180Z             {
2026-06-21T03:56:28.5480293Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5480375Z               "line": 470
2026-06-21T03:56:28.5480462Z             },
2026-06-21T03:56:28.5480528Z             {
2026-06-21T03:56:28.5480632Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.5480714Z               "line": 526
2026-06-21T03:56:28.5480795Z             }
2026-06-21T03:56:28.5480876Z           ]
2026-06-21T03:56:28.5480956Z         }
2026-06-21T03:56:28.5481034Z       }
2026-06-21T03:56:28.5481115Z     },
2026-06-21T03:56:28.5481195Z     {
2026-06-21T03:56:28.5481295Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T03:56:28.5485020Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T03:56:28.5485133Z       "requiredStages": [
2026-06-21T03:56:28.5485225Z         "impl",
2026-06-21T03:56:28.5485307Z         "unit",
2026-06-21T03:56:28.5485382Z         "int"
2026-06-21T03:56:28.5485477Z       ],
2026-06-21T03:56:28.5485554Z       "stages": {
2026-06-21T03:56:28.5485640Z         "doc": {
2026-06-21T03:56:28.5485735Z           "complete": false,
2026-06-21T03:56:28.5485816Z           "evidence": []
2026-06-21T03:56:28.5485884Z         },
2026-06-21T03:56:28.5485969Z         "impl": {
2026-06-21T03:56:28.5486059Z           "complete": true,
2026-06-21T03:56:28.5486136Z           "evidence": [
2026-06-21T03:56:28.5486208Z             {
2026-06-21T03:56:28.5486336Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5486421Z               "line": 116
2026-06-21T03:56:28.5486499Z             },
2026-06-21T03:56:28.5486584Z             {
2026-06-21T03:56:28.5486703Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.5486794Z               "line": 132
2026-06-21T03:56:28.5486871Z             },
2026-06-21T03:56:28.5487065Z             {
2026-06-21T03:56:28.5487185Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.5487361Z               "line": 434
2026-06-21T03:56:28.5487448Z             },
2026-06-21T03:56:28.5487524Z             {
2026-06-21T03:56:28.5487641Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5487717Z               "line": 139
2026-06-21T03:56:28.5487799Z             },
2026-06-21T03:56:28.5487878Z             {
2026-06-21T03:56:28.5487982Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5488063Z               "line": 326
2026-06-21T03:56:28.5488140Z             },
2026-06-21T03:56:28.5488226Z             {
2026-06-21T03:56:28.5488334Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5488407Z               "line": 555
2026-06-21T03:56:28.5488493Z             }
2026-06-21T03:56:28.5488560Z           ]
2026-06-21T03:56:28.5488640Z         },
2026-06-21T03:56:28.5488722Z         "int": {
2026-06-21T03:56:28.5488812Z           "complete": true,
2026-06-21T03:56:28.5488898Z           "evidence": [
2026-06-21T03:56:28.5489066Z             {
2026-06-21T03:56:28.5489208Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T03:56:28.5489288Z               "line": 32
2026-06-21T03:56:28.5489371Z             }
2026-06-21T03:56:28.5489447Z           ]
2026-06-21T03:56:28.5489531Z         },
2026-06-21T03:56:28.5489608Z         "unit": {
2026-06-21T03:56:28.5489691Z           "complete": true,
2026-06-21T03:56:28.5489776Z           "evidence": [
2026-06-21T03:56:28.5489855Z             {
2026-06-21T03:56:28.5489971Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5490048Z               "line": 625
2026-06-21T03:56:28.5490128Z             },
2026-06-21T03:56:28.5490217Z             {
2026-06-21T03:56:28.5490322Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5490413Z               "line": 646
2026-06-21T03:56:28.5490497Z             },
2026-06-21T03:56:28.5490577Z             {
2026-06-21T03:56:28.5490687Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5490779Z               "line": 662
2026-06-21T03:56:28.5490858Z             },
2026-06-21T03:56:28.5490940Z             {
2026-06-21T03:56:28.5491050Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5491136Z               "line": 680
2026-06-21T03:56:28.5491206Z             },
2026-06-21T03:56:28.5491284Z             {
2026-06-21T03:56:28.5491398Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5491479Z               "line": 704
2026-06-21T03:56:28.5491555Z             }
2026-06-21T03:56:28.5491637Z           ]
2026-06-21T03:56:28.5491722Z         }
2026-06-21T03:56:28.5491798Z       }
2026-06-21T03:56:28.5491879Z     },
2026-06-21T03:56:28.5491957Z     {
2026-06-21T03:56:28.5492065Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T03:56:28.5492204Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T03:56:28.5492290Z       "requiredStages": [
2026-06-21T03:56:28.5492375Z         "impl",
2026-06-21T03:56:28.5492461Z         "unit"
2026-06-21T03:56:28.5492538Z       ],
2026-06-21T03:56:28.5492615Z       "stages": {
2026-06-21T03:56:28.5492685Z         "doc": {
2026-06-21T03:56:28.5492771Z           "complete": false,
2026-06-21T03:56:28.5492858Z           "evidence": []
2026-06-21T03:56:28.5492939Z         },
2026-06-21T03:56:28.5493019Z         "impl": {
2026-06-21T03:56:28.5493099Z           "complete": true,
2026-06-21T03:56:28.5493185Z           "evidence": [
2026-06-21T03:56:28.5493271Z             {
2026-06-21T03:56:28.5493380Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5493461Z               "line": 35
2026-06-21T03:56:28.5493538Z             }
2026-06-21T03:56:28.5493619Z           ]
2026-06-21T03:56:28.5493700Z         },
2026-06-21T03:56:28.5493781Z         "int": {
2026-06-21T03:56:28.5493977Z           "complete": false,
2026-06-21T03:56:28.5494057Z           "evidence": []
2026-06-21T03:56:28.5494139Z         },
2026-06-21T03:56:28.5494305Z         "unit": {
2026-06-21T03:56:28.5494391Z           "complete": true,
2026-06-21T03:56:28.5494468Z           "evidence": [
2026-06-21T03:56:28.5494550Z             {
2026-06-21T03:56:28.5494659Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T03:56:28.5494739Z               "line": 220
2026-06-21T03:56:28.5494831Z             }
2026-06-21T03:56:28.5494911Z           ]
2026-06-21T03:56:28.5494997Z         }
2026-06-21T03:56:28.5495073Z       }
2026-06-21T03:56:28.5495151Z     },
2026-06-21T03:56:28.5495235Z     {
2026-06-21T03:56:28.5495344Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T03:56:28.5498462Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T03:56:28.5498575Z       "requiredStages": [
2026-06-21T03:56:28.5498647Z         "impl",
2026-06-21T03:56:28.5498744Z         "unit",
2026-06-21T03:56:28.5498829Z         "int"
2026-06-21T03:56:28.5498904Z       ],
2026-06-21T03:56:28.5499044Z       "stages": {
2026-06-21T03:56:28.5499124Z         "doc": {
2026-06-21T03:56:28.5499214Z           "complete": false,
2026-06-21T03:56:28.5499297Z           "evidence": []
2026-06-21T03:56:28.5499372Z         },
2026-06-21T03:56:28.5499453Z         "impl": {
2026-06-21T03:56:28.5499538Z           "complete": true,
2026-06-21T03:56:28.5499626Z           "evidence": [
2026-06-21T03:56:28.5499706Z             {
2026-06-21T03:56:28.5499830Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5499906Z               "line": 202
2026-06-21T03:56:28.5499992Z             },
2026-06-21T03:56:28.5500073Z             {
2026-06-21T03:56:28.5500187Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.5500270Z               "line": 107
2026-06-21T03:56:28.5500350Z             },
2026-06-21T03:56:28.5500420Z             {
2026-06-21T03:56:28.5500536Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.5500618Z               "line": 138
2026-06-21T03:56:28.5500707Z             },
2026-06-21T03:56:28.5500787Z             {
2026-06-21T03:56:28.5500907Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5500982Z               "line": 209
2026-06-21T03:56:28.5501067Z             },
2026-06-21T03:56:28.5501142Z             {
2026-06-21T03:56:28.5501257Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5501339Z               "line": 246
2026-06-21T03:56:28.5501419Z             },
2026-06-21T03:56:28.5501495Z             {
2026-06-21T03:56:28.5501601Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5501677Z               "line": 379
2026-06-21T03:56:28.5501757Z             }
2026-06-21T03:56:28.5501834Z           ]
2026-06-21T03:56:28.5501911Z         },
2026-06-21T03:56:28.5501987Z         "int": {
2026-06-21T03:56:28.5502072Z           "complete": true,
2026-06-21T03:56:28.5502273Z           "evidence": [
2026-06-21T03:56:28.5502349Z             {
2026-06-21T03:56:28.5502569Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T03:56:28.5502654Z               "line": 17
2026-06-21T03:56:28.5502735Z             }
2026-06-21T03:56:28.5502817Z           ]
2026-06-21T03:56:28.5502898Z         },
2026-06-21T03:56:28.5502968Z         "unit": {
2026-06-21T03:56:28.5503050Z           "complete": true,
2026-06-21T03:56:28.5503132Z           "evidence": [
2026-06-21T03:56:28.5503208Z             {
2026-06-21T03:56:28.5503327Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5503403Z               "line": 982
2026-06-21T03:56:28.5503475Z             }
2026-06-21T03:56:28.5503551Z           ]
2026-06-21T03:56:28.5503621Z         }
2026-06-21T03:56:28.5503697Z       }
2026-06-21T03:56:28.5503779Z     },
2026-06-21T03:56:28.5503850Z     {
2026-06-21T03:56:28.5503973Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T03:56:28.5504232Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T03:56:28.5504326Z       "requiredStages": [
2026-06-21T03:56:28.5504408Z         "impl",
2026-06-21T03:56:28.5504480Z         "unit"
2026-06-21T03:56:28.5504566Z       ],
2026-06-21T03:56:28.5504646Z       "stages": {
2026-06-21T03:56:28.5504718Z         "doc": {
2026-06-21T03:56:28.5504804Z           "complete": false,
2026-06-21T03:56:28.5504885Z           "evidence": []
2026-06-21T03:56:28.5504970Z         },
2026-06-21T03:56:28.5505048Z         "impl": {
2026-06-21T03:56:28.5505138Z           "complete": true,
2026-06-21T03:56:28.5505228Z           "evidence": [
2026-06-21T03:56:28.5505309Z             {
2026-06-21T03:56:28.5505429Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.5505513Z               "line": 405
2026-06-21T03:56:28.5505585Z             },
2026-06-21T03:56:28.5505657Z             {
2026-06-21T03:56:28.5505782Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.5505866Z               "line": 409
2026-06-21T03:56:28.5505956Z             },
2026-06-21T03:56:28.5506037Z             {
2026-06-21T03:56:28.5506155Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.5506240Z               "line": 156
2026-06-21T03:56:28.5506317Z             }
2026-06-21T03:56:28.5506398Z           ]
2026-06-21T03:56:28.5506483Z         },
2026-06-21T03:56:28.5506564Z         "int": {
2026-06-21T03:56:28.5506655Z           "complete": false,
2026-06-21T03:56:28.5506737Z           "evidence": []
2026-06-21T03:56:28.5506817Z         },
2026-06-21T03:56:28.5506898Z         "unit": {
2026-06-21T03:56:28.5506975Z           "complete": true,
2026-06-21T03:56:28.5507060Z           "evidence": [
2026-06-21T03:56:28.5507141Z             {
2026-06-21T03:56:28.5507256Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.5507328Z               "line": 865
2026-06-21T03:56:28.5507442Z             },
2026-06-21T03:56:28.5507522Z             {
2026-06-21T03:56:28.5507633Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.5507718Z               "line": 879
2026-06-21T03:56:28.5507799Z             },
2026-06-21T03:56:28.5507880Z             {
2026-06-21T03:56:28.5507987Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.5508066Z               "line": 898
2026-06-21T03:56:28.5508147Z             },
2026-06-21T03:56:28.5508225Z             {
2026-06-21T03:56:28.5508329Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.5508414Z               "line": 915
2026-06-21T03:56:28.5508491Z             },
2026-06-21T03:56:28.5508563Z             {
2026-06-21T03:56:28.5508681Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.5508762Z               "line": 441
2026-06-21T03:56:28.5508842Z             }
2026-06-21T03:56:28.5508929Z           ]
2026-06-21T03:56:28.5509093Z         }
2026-06-21T03:56:28.5509280Z       }
2026-06-21T03:56:28.5509351Z     },
2026-06-21T03:56:28.5509427Z     {
2026-06-21T03:56:28.5509627Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T03:56:28.5519392Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T03:56:28.5519540Z       "requiredStages": [
2026-06-21T03:56:28.5519620Z         "doc",
2026-06-21T03:56:28.5519705Z         "impl",
2026-06-21T03:56:28.5519787Z         "unit",
2026-06-21T03:56:28.5519859Z         "int"
2026-06-21T03:56:28.5519939Z       ],
2026-06-21T03:56:28.5520020Z       "stages": {
2026-06-21T03:56:28.5520102Z         "doc": {
2026-06-21T03:56:28.5520183Z           "complete": true,
2026-06-21T03:56:28.5520263Z           "evidence": [
2026-06-21T03:56:28.5520344Z             {
2026-06-21T03:56:28.5520436Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5520521Z               "line": 420
2026-06-21T03:56:28.5520597Z             },
2026-06-21T03:56:28.5520784Z             {
2026-06-21T03:56:28.5520884Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5521075Z               "line": 402
2026-06-21T03:56:28.5521155Z             }
2026-06-21T03:56:28.5521231Z           ]
2026-06-21T03:56:28.5521312Z         },
2026-06-21T03:56:28.5521395Z         "impl": {
2026-06-21T03:56:28.5521479Z           "complete": true,
2026-06-21T03:56:28.5521555Z           "evidence": [
2026-06-21T03:56:28.5521637Z             {
2026-06-21T03:56:28.5521757Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5521841Z               "line": 797
2026-06-21T03:56:28.5521917Z             },
2026-06-21T03:56:28.5521998Z             {
2026-06-21T03:56:28.5522116Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5522191Z               "line": 822
2026-06-21T03:56:28.5522276Z             },
2026-06-21T03:56:28.5522359Z             {
2026-06-21T03:56:28.5522468Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5522563Z               "line": 839
2026-06-21T03:56:28.5522639Z             },
2026-06-21T03:56:28.5522716Z             {
2026-06-21T03:56:28.5522839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5522925Z               "line": 854
2026-06-21T03:56:28.5523007Z             },
2026-06-21T03:56:28.5523088Z             {
2026-06-21T03:56:28.5523202Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5523284Z               "line": 874
2026-06-21T03:56:28.5523364Z             },
2026-06-21T03:56:28.5523440Z             {
2026-06-21T03:56:28.5523545Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5523623Z               "line": 964
2026-06-21T03:56:28.5523703Z             },
2026-06-21T03:56:28.5523784Z             {
2026-06-21T03:56:28.5523884Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5523975Z               "line": 1016
2026-06-21T03:56:28.5524051Z             },
2026-06-21T03:56:28.5524141Z             {
2026-06-21T03:56:28.5524257Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5524337Z               "line": 1075
2026-06-21T03:56:28.5524418Z             },
2026-06-21T03:56:28.5524499Z             {
2026-06-21T03:56:28.5524624Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5524704Z               "line": 527
2026-06-21T03:56:28.5524779Z             }
2026-06-21T03:56:28.5524860Z           ]
2026-06-21T03:56:28.5524947Z         },
2026-06-21T03:56:28.5525028Z         "int": {
2026-06-21T03:56:28.5525117Z           "complete": true,
2026-06-21T03:56:28.5525199Z           "evidence": [
2026-06-21T03:56:28.5525286Z             {
2026-06-21T03:56:28.5525404Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:56:28.5525490Z               "line": 35
2026-06-21T03:56:28.5525567Z             },
2026-06-21T03:56:28.5525648Z             {
2026-06-21T03:56:28.5525752Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:56:28.5525848Z               "line": 559
2026-06-21T03:56:28.5525934Z             },
2026-06-21T03:56:28.5526015Z             {
2026-06-21T03:56:28.5526134Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:56:28.5526216Z               "line": 580
2026-06-21T03:56:28.5526301Z             }
2026-06-21T03:56:28.5526377Z           ]
2026-06-21T03:56:28.5526463Z         },
2026-06-21T03:56:28.5526549Z         "unit": {
2026-06-21T03:56:28.5526634Z           "complete": true,
2026-06-21T03:56:28.5526720Z           "evidence": [
2026-06-21T03:56:28.5526787Z             {
2026-06-21T03:56:28.5526892Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5526972Z               "line": 1202
2026-06-21T03:56:28.5527058Z             },
2026-06-21T03:56:28.5527139Z             {
2026-06-21T03:56:28.5527243Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5527327Z               "line": 1246
2026-06-21T03:56:28.5527499Z             },
2026-06-21T03:56:28.5527576Z             {
2026-06-21T03:56:28.5527679Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5527834Z               "line": 1260
2026-06-21T03:56:28.5527914Z             },
2026-06-21T03:56:28.5527994Z             {
2026-06-21T03:56:28.5528110Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5528186Z               "line": 1278
2026-06-21T03:56:28.5528271Z             },
2026-06-21T03:56:28.5528347Z             {
2026-06-21T03:56:28.5528458Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5528553Z               "line": 1302
2026-06-21T03:56:28.5528623Z             },
2026-06-21T03:56:28.5528705Z             {
2026-06-21T03:56:28.5528806Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5528892Z               "line": 1529
2026-06-21T03:56:28.5529015Z             }
2026-06-21T03:56:28.5529107Z           ]
2026-06-21T03:56:28.5529186Z         }
2026-06-21T03:56:28.5529263Z       }
2026-06-21T03:56:28.5529345Z     },
2026-06-21T03:56:28.5529412Z     {
2026-06-21T03:56:28.5529524Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T03:56:28.5531621Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T03:56:28.5531715Z       "requiredStages": [
2026-06-21T03:56:28.5531805Z         "unit",
2026-06-21T03:56:28.5531892Z         "int"
2026-06-21T03:56:28.5531969Z       ],
2026-06-21T03:56:28.5532067Z       "stages": {
2026-06-21T03:56:28.5532149Z         "doc": {
2026-06-21T03:56:28.5532241Z           "complete": true,
2026-06-21T03:56:28.5532322Z           "evidence": [
2026-06-21T03:56:28.5532406Z             {
2026-06-21T03:56:28.5532510Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5532592Z               "line": 381
2026-06-21T03:56:28.5532676Z             }
2026-06-21T03:56:28.5532756Z           ]
2026-06-21T03:56:28.5532832Z         },
2026-06-21T03:56:28.5532919Z         "impl": {
2026-06-21T03:56:28.5533010Z           "complete": true,
2026-06-21T03:56:28.5533094Z           "evidence": [
2026-06-21T03:56:28.5533166Z             {
2026-06-21T03:56:28.5533272Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5533353Z               "line": 100
2026-06-21T03:56:28.5533433Z             }
2026-06-21T03:56:28.5533515Z           ]
2026-06-21T03:56:28.5533600Z         },
2026-06-21T03:56:28.5533677Z         "int": {
2026-06-21T03:56:28.5533762Z           "complete": true,
2026-06-21T03:56:28.5533854Z           "evidence": [
2026-06-21T03:56:28.5533934Z             {
2026-06-21T03:56:28.5534053Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5534129Z               "line": 1042
2026-06-21T03:56:28.5534216Z             }
2026-06-21T03:56:28.5534296Z           ]
2026-06-21T03:56:28.5534372Z         },
2026-06-21T03:56:28.5534459Z         "unit": {
2026-06-21T03:56:28.5534550Z           "complete": true,
2026-06-21T03:56:28.5534639Z           "evidence": [
2026-06-21T03:56:28.5534716Z             {
2026-06-21T03:56:28.5534832Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5534921Z               "line": 2217
2026-06-21T03:56:28.5534997Z             }
2026-06-21T03:56:28.5535084Z           ]
2026-06-21T03:56:28.5535161Z         }
2026-06-21T03:56:28.5535245Z       }
2026-06-21T03:56:28.5535454Z     },
2026-06-21T03:56:28.5535531Z     {
2026-06-21T03:56:28.5535635Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T03:56:28.5536508Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T03:56:28.5536608Z       "requiredStages": [
2026-06-21T03:56:28.5536689Z         "doc",
2026-06-21T03:56:28.5536766Z         "impl",
2026-06-21T03:56:28.5536846Z         "unit"
2026-06-21T03:56:28.5536927Z       ],
2026-06-21T03:56:28.5537014Z       "stages": {
2026-06-21T03:56:28.5537090Z         "doc": {
2026-06-21T03:56:28.5537175Z           "complete": true,
2026-06-21T03:56:28.5537261Z           "evidence": [
2026-06-21T03:56:28.5537343Z             {
2026-06-21T03:56:28.5537448Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5537528Z               "line": 366
2026-06-21T03:56:28.5537623Z             }
2026-06-21T03:56:28.5537704Z           ]
2026-06-21T03:56:28.5537793Z         },
2026-06-21T03:56:28.5537878Z         "impl": {
2026-06-21T03:56:28.5537958Z           "complete": true,
2026-06-21T03:56:28.5538031Z           "evidence": [
2026-06-21T03:56:28.5538117Z             {
2026-06-21T03:56:28.5538235Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.5538316Z               "line": 87
2026-06-21T03:56:28.5538398Z             },
2026-06-21T03:56:28.5538474Z             {
2026-06-21T03:56:28.5538583Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5538661Z               "line": 105
2026-06-21T03:56:28.5538746Z             },
2026-06-21T03:56:28.5538831Z             {
2026-06-21T03:56:28.5539023Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.5539108Z               "line": 55
2026-06-21T03:56:28.5539189Z             },
2026-06-21T03:56:28.5539270Z             {
2026-06-21T03:56:28.5539389Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.5539480Z               "line": 31
2026-06-21T03:56:28.5539566Z             },
2026-06-21T03:56:28.5539648Z             {
2026-06-21T03:56:28.5539756Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.5539832Z               "line": 446
2026-06-21T03:56:28.5539915Z             },
2026-06-21T03:56:28.5539996Z             {
2026-06-21T03:56:28.5540114Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.5540201Z               "line": 95
2026-06-21T03:56:28.5540277Z             },
2026-06-21T03:56:28.5540362Z             {
2026-06-21T03:56:28.5540480Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.5540566Z               "line": 29
2026-06-21T03:56:28.5540647Z             },
2026-06-21T03:56:28.5540731Z             {
2026-06-21T03:56:28.5540844Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.5540936Z               "line": 104
2026-06-21T03:56:28.5541022Z             },
2026-06-21T03:56:28.5541092Z             {
2026-06-21T03:56:28.5541222Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5541308Z               "line": 208
2026-06-21T03:56:28.5541379Z             },
2026-06-21T03:56:28.5541460Z             {
2026-06-21T03:56:28.5541575Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:56:28.5541651Z               "line": 28
2026-06-21T03:56:28.5541731Z             },
2026-06-21T03:56:28.5541808Z             {
2026-06-21T03:56:28.5541924Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:56:28.5542004Z               "line": 74
2026-06-21T03:56:28.5542089Z             },
2026-06-21T03:56:28.5542167Z             {
2026-06-21T03:56:28.5542294Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.5542371Z               "line": 32
2026-06-21T03:56:28.5542457Z             },
2026-06-21T03:56:28.5542647Z             {
2026-06-21T03:56:28.5542757Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5542933Z               "line": 40
2026-06-21T03:56:28.5543014Z             },
2026-06-21T03:56:28.5543099Z             {
2026-06-21T03:56:28.5543204Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5543297Z               "line": 184
2026-06-21T03:56:28.5543373Z             },
2026-06-21T03:56:28.5543454Z             {
2026-06-21T03:56:28.5543556Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5543640Z               "line": 61
2026-06-21T03:56:28.5543721Z             },
2026-06-21T03:56:28.5543794Z             {
2026-06-21T03:56:28.5543904Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5543988Z               "line": 131
2026-06-21T03:56:28.5544070Z             },
2026-06-21T03:56:28.5544147Z             {
2026-06-21T03:56:28.5544256Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.5544341Z               "line": 223
2026-06-21T03:56:28.5544419Z             },
2026-06-21T03:56:28.5544499Z             {
2026-06-21T03:56:28.5544613Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:56:28.5544694Z               "line": 37
2026-06-21T03:56:28.5544781Z             },
2026-06-21T03:56:28.5544856Z             {
2026-06-21T03:56:28.5544976Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.5545067Z               "line": 38
2026-06-21T03:56:28.5545143Z             },
2026-06-21T03:56:28.5545219Z             {
2026-06-21T03:56:28.5545324Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.5545406Z               "line": 36
2026-06-21T03:56:28.5545485Z             },
2026-06-21T03:56:28.5545562Z             {
2026-06-21T03:56:28.5545678Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:56:28.5545768Z               "line": 40
2026-06-21T03:56:28.5545847Z             }
2026-06-21T03:56:28.5545923Z           ]
2026-06-21T03:56:28.5546014Z         },
2026-06-21T03:56:28.5546091Z         "int": {
2026-06-21T03:56:28.5546186Z           "complete": false,
2026-06-21T03:56:28.5546290Z           "evidence": []
2026-06-21T03:56:28.5546368Z         },
2026-06-21T03:56:28.5546458Z         "unit": {
2026-06-21T03:56:28.5546543Z           "complete": true,
2026-06-21T03:56:28.5546639Z           "evidence": [
2026-06-21T03:56:28.5546716Z             {
2026-06-21T03:56:28.5546839Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.5546930Z               "line": 212
2026-06-21T03:56:28.5546998Z             },
2026-06-21T03:56:28.5547078Z             {
2026-06-21T03:56:28.5547196Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T03:56:28.5547288Z               "line": 136
2026-06-21T03:56:28.5547378Z             },
2026-06-21T03:56:28.5547454Z             {
2026-06-21T03:56:28.5547584Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.5547665Z               "line": 685
2026-06-21T03:56:28.5547749Z             },
2026-06-21T03:56:28.5547826Z             {
2026-06-21T03:56:28.5547937Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.5548022Z               "line": 224
2026-06-21T03:56:28.5548107Z             },
2026-06-21T03:56:28.5548192Z             {
2026-06-21T03:56:28.5548306Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:56:28.5548395Z               "line": 206
2026-06-21T03:56:28.5548476Z             },
2026-06-21T03:56:28.5548557Z             {
2026-06-21T03:56:28.5548658Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.5548738Z               "line": 112
2026-06-21T03:56:28.5548819Z             },
2026-06-21T03:56:28.5548901Z             {
2026-06-21T03:56:28.5549096Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:56:28.5549172Z               "line": 157
2026-06-21T03:56:28.5549254Z             },
2026-06-21T03:56:28.5549334Z             {
2026-06-21T03:56:28.5549550Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.5549640Z               "line": 215
2026-06-21T03:56:28.5549821Z             },
2026-06-21T03:56:28.5549897Z             {
2026-06-21T03:56:28.5550007Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.5550097Z               "line": 141
2026-06-21T03:56:28.5550170Z             },
2026-06-21T03:56:28.5550236Z             {
2026-06-21T03:56:28.5550355Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:56:28.5550426Z               "line": 162
2026-06-21T03:56:28.5550509Z             }
2026-06-21T03:56:28.5550593Z           ]
2026-06-21T03:56:28.5550674Z         }
2026-06-21T03:56:28.5550751Z       }
2026-06-21T03:56:28.5550833Z     },
2026-06-21T03:56:28.5550918Z     {
2026-06-21T03:56:28.5551035Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T03:56:28.5552859Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T03:56:28.5552974Z       "requiredStages": [
2026-06-21T03:56:28.5553051Z         "doc",
2026-06-21T03:56:28.5553137Z         "impl",
2026-06-21T03:56:28.5553216Z         "unit",
2026-06-21T03:56:28.5553293Z         "int"
2026-06-21T03:56:28.5553376Z       ],
2026-06-21T03:56:28.5553461Z       "stages": {
2026-06-21T03:56:28.5553545Z         "doc": {
2026-06-21T03:56:28.5553630Z           "complete": true,
2026-06-21T03:56:28.5553721Z           "evidence": [
2026-06-21T03:56:28.5553806Z             {
2026-06-21T03:56:28.5553914Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.5554001Z               "line": 250
2026-06-21T03:56:28.5554087Z             }
2026-06-21T03:56:28.5554172Z           ]
2026-06-21T03:56:28.5554253Z         },
2026-06-21T03:56:28.5554339Z         "impl": {
2026-06-21T03:56:28.5554425Z           "complete": true,
2026-06-21T03:56:28.5554506Z           "evidence": [
2026-06-21T03:56:28.5554587Z             {
2026-06-21T03:56:28.5554698Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.5554773Z               "line": 135
2026-06-21T03:56:28.5554858Z             },
2026-06-21T03:56:28.5554935Z             {
2026-06-21T03:56:28.5555036Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.5555121Z               "line": 157
2026-06-21T03:56:28.5555207Z             }
2026-06-21T03:56:28.5555289Z           ]
2026-06-21T03:56:28.5555370Z         },
2026-06-21T03:56:28.5555451Z         "int": {
2026-06-21T03:56:28.5555546Z           "complete": true,
2026-06-21T03:56:28.5555627Z           "evidence": [
2026-06-21T03:56:28.5555717Z             {
2026-06-21T03:56:28.5555831Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T03:56:28.5555919Z               "line": 15
2026-06-21T03:56:28.5556000Z             }
2026-06-21T03:56:28.5556083Z           ]
2026-06-21T03:56:28.5556165Z         },
2026-06-21T03:56:28.5556247Z         "unit": {
2026-06-21T03:56:28.5556347Z           "complete": true,
2026-06-21T03:56:28.5556431Z           "evidence": [
2026-06-21T03:56:28.5556521Z             {
2026-06-21T03:56:28.5556632Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T03:56:28.5556713Z               "line": 233
2026-06-21T03:56:28.5556798Z             }
2026-06-21T03:56:28.5556880Z           ]
2026-06-21T03:56:28.5556961Z         }
2026-06-21T03:56:28.5559641Z       }
2026-06-21T03:56:28.5559747Z     },
2026-06-21T03:56:28.5559828Z     {
2026-06-21T03:56:28.5560110Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T03:56:28.5560271Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T03:56:28.5560481Z       "requiredStages": [
2026-06-21T03:56:28.5560576Z         "impl",
2026-06-21T03:56:28.5560652Z         "unit"
2026-06-21T03:56:28.5560740Z       ],
2026-06-21T03:56:28.5560815Z       "stages": {
2026-06-21T03:56:28.5560895Z         "doc": {
2026-06-21T03:56:28.5560991Z           "complete": false,
2026-06-21T03:56:28.5561074Z           "evidence": []
2026-06-21T03:56:28.5561158Z         },
2026-06-21T03:56:28.5561239Z         "impl": {
2026-06-21T03:56:28.5561335Z           "complete": true,
2026-06-21T03:56:28.5561417Z           "evidence": [
2026-06-21T03:56:28.5561496Z             {
2026-06-21T03:56:28.5561619Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5561701Z               "line": 95
2026-06-21T03:56:28.5561776Z             },
2026-06-21T03:56:28.5561846Z             {
2026-06-21T03:56:28.5561975Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5562056Z               "line": 117
2026-06-21T03:56:28.5562142Z             }
2026-06-21T03:56:28.5562222Z           ]
2026-06-21T03:56:28.5562303Z         },
2026-06-21T03:56:28.5562390Z         "int": {
2026-06-21T03:56:28.5562481Z           "complete": false,
2026-06-21T03:56:28.5562561Z           "evidence": []
2026-06-21T03:56:28.5562638Z         },
2026-06-21T03:56:28.5562719Z         "unit": {
2026-06-21T03:56:28.5562810Z           "complete": true,
2026-06-21T03:56:28.5562894Z           "evidence": [
2026-06-21T03:56:28.5562977Z             {
2026-06-21T03:56:28.5563081Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5563172Z               "line": 250
2026-06-21T03:56:28.5563253Z             },
2026-06-21T03:56:28.5563330Z             {
2026-06-21T03:56:28.5563438Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5563524Z               "line": 412
2026-06-21T03:56:28.5563607Z             },
2026-06-21T03:56:28.5563683Z             {
2026-06-21T03:56:28.5563791Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5563883Z               "line": 611
2026-06-21T03:56:28.5563964Z             },
2026-06-21T03:56:28.5564049Z             {
2026-06-21T03:56:28.5564143Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5564224Z               "line": 669
2026-06-21T03:56:28.5564305Z             }
2026-06-21T03:56:28.5564380Z           ]
2026-06-21T03:56:28.5564451Z         }
2026-06-21T03:56:28.5564531Z       }
2026-06-21T03:56:28.5564608Z     },
2026-06-21T03:56:28.5564686Z     {
2026-06-21T03:56:28.5564798Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T03:56:28.5567269Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T03:56:28.5567377Z       "requiredStages": [
2026-06-21T03:56:28.5567459Z         "impl",
2026-06-21T03:56:28.5567545Z         "unit",
2026-06-21T03:56:28.5567625Z         "int"
2026-06-21T03:56:28.5567706Z       ],
2026-06-21T03:56:28.5567784Z       "stages": {
2026-06-21T03:56:28.5567869Z         "doc": {
2026-06-21T03:56:28.5567950Z           "complete": false,
2026-06-21T03:56:28.5568035Z           "evidence": []
2026-06-21T03:56:28.5568312Z         },
2026-06-21T03:56:28.5568399Z         "impl": {
2026-06-21T03:56:28.5568480Z           "complete": true,
2026-06-21T03:56:28.5568641Z           "evidence": [
2026-06-21T03:56:28.5568719Z             {
2026-06-21T03:56:28.5568832Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5568918Z               "line": 925
2026-06-21T03:56:28.5569081Z             },
2026-06-21T03:56:28.5569161Z             {
2026-06-21T03:56:28.5569274Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5569355Z               "line": 994
2026-06-21T03:56:28.5569436Z             }
2026-06-21T03:56:28.5569515Z           ]
2026-06-21T03:56:28.5569592Z         },
2026-06-21T03:56:28.5569673Z         "int": {
2026-06-21T03:56:28.5569754Z           "complete": true,
2026-06-21T03:56:28.5569844Z           "evidence": [
2026-06-21T03:56:28.5569920Z             {
2026-06-21T03:56:28.5570045Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:56:28.5570126Z               "line": 187
2026-06-21T03:56:28.5570211Z             },
2026-06-21T03:56:28.5570302Z             {
2026-06-21T03:56:28.5570412Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T03:56:28.5570502Z               "line": 343
2026-06-21T03:56:28.5570578Z             }
2026-06-21T03:56:28.5570665Z           ]
2026-06-21T03:56:28.5570741Z         },
2026-06-21T03:56:28.5570821Z         "unit": {
2026-06-21T03:56:28.5570907Z           "complete": true,
2026-06-21T03:56:28.5570985Z           "evidence": [
2026-06-21T03:56:28.5571065Z             {
2026-06-21T03:56:28.5571174Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5571256Z               "line": 1206
2026-06-21T03:56:28.5571333Z             },
2026-06-21T03:56:28.5571418Z             {
2026-06-21T03:56:28.5571518Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5571600Z               "line": 8116
2026-06-21T03:56:28.5571681Z             }
2026-06-21T03:56:28.5571761Z           ]
2026-06-21T03:56:28.5571847Z         }
2026-06-21T03:56:28.5571924Z       }
2026-06-21T03:56:28.5572014Z     },
2026-06-21T03:56:28.5572090Z     {
2026-06-21T03:56:28.5572189Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T03:56:28.5572369Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T03:56:28.5572449Z       "requiredStages": [
2026-06-21T03:56:28.5572530Z         "impl",
2026-06-21T03:56:28.5572612Z         "unit"
2026-06-21T03:56:28.5572693Z       ],
2026-06-21T03:56:28.5572768Z       "stages": {
2026-06-21T03:56:28.5572849Z         "doc": {
2026-06-21T03:56:28.5572941Z           "complete": false,
2026-06-21T03:56:28.5573022Z           "evidence": []
2026-06-21T03:56:28.5573112Z         },
2026-06-21T03:56:28.5573179Z         "impl": {
2026-06-21T03:56:28.5573265Z           "complete": true,
2026-06-21T03:56:28.5573356Z           "evidence": [
2026-06-21T03:56:28.5573431Z             {
2026-06-21T03:56:28.5573542Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5573627Z               "line": 262
2026-06-21T03:56:28.5573703Z             },
2026-06-21T03:56:28.5573784Z             {
2026-06-21T03:56:28.5573890Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5573975Z               "line": 307
2026-06-21T03:56:28.5574051Z             },
2026-06-21T03:56:28.5574128Z             {
2026-06-21T03:56:28.5574228Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5574313Z               "line": 319
2026-06-21T03:56:28.5574395Z             }
2026-06-21T03:56:28.5574482Z           ]
2026-06-21T03:56:28.5574562Z         },
2026-06-21T03:56:28.5574642Z         "int": {
2026-06-21T03:56:28.5574727Z           "complete": false,
2026-06-21T03:56:28.5574813Z           "evidence": []
2026-06-21T03:56:28.5574894Z         },
2026-06-21T03:56:28.5574973Z         "unit": {
2026-06-21T03:56:28.5575053Z           "complete": true,
2026-06-21T03:56:28.5575135Z           "evidence": [
2026-06-21T03:56:28.5575316Z             {
2026-06-21T03:56:28.5575435Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5575631Z               "line": 455
2026-06-21T03:56:28.5575712Z             },
2026-06-21T03:56:28.5575794Z             {
2026-06-21T03:56:28.5575898Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5575979Z               "line": 499
2026-06-21T03:56:28.5576060Z             }
2026-06-21T03:56:28.5576142Z           ]
2026-06-21T03:56:28.5576222Z         }
2026-06-21T03:56:28.5576308Z       }
2026-06-21T03:56:28.5576384Z     },
2026-06-21T03:56:28.5576471Z     {
2026-06-21T03:56:28.5576566Z       "id": "REQ-HOST-RUN-1",
2026-06-21T03:56:28.5579026Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T03:56:28.5579145Z       "requiredStages": [
2026-06-21T03:56:28.5579230Z         "impl",
2026-06-21T03:56:28.5579307Z         "unit",
2026-06-21T03:56:28.5579392Z         "int"
2026-06-21T03:56:28.5579468Z       ],
2026-06-21T03:56:28.5579550Z       "stages": {
2026-06-21T03:56:28.5579632Z         "doc": {
2026-06-21T03:56:28.5579721Z           "complete": false,
2026-06-21T03:56:28.5579816Z           "evidence": []
2026-06-21T03:56:28.5579891Z         },
2026-06-21T03:56:28.5579973Z         "impl": {
2026-06-21T03:56:28.5580053Z           "complete": true,
2026-06-21T03:56:28.5580142Z           "evidence": [
2026-06-21T03:56:28.5580223Z             {
2026-06-21T03:56:28.5580358Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5580447Z               "line": 30
2026-06-21T03:56:28.5580533Z             },
2026-06-21T03:56:28.5580615Z             {
2026-06-21T03:56:28.5580733Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5580819Z               "line": 76
2026-06-21T03:56:28.5580896Z             },
2026-06-21T03:56:28.5580977Z             {
2026-06-21T03:56:28.5581095Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5581177Z               "line": 181
2026-06-21T03:56:28.5581254Z             },
2026-06-21T03:56:28.5581325Z             {
2026-06-21T03:56:28.5581429Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5581511Z               "line": 1266
2026-06-21T03:56:28.5581588Z             }
2026-06-21T03:56:28.5581668Z           ]
2026-06-21T03:56:28.5581749Z         },
2026-06-21T03:56:28.5581836Z         "int": {
2026-06-21T03:56:28.5581926Z           "complete": true,
2026-06-21T03:56:28.5582011Z           "evidence": [
2026-06-21T03:56:28.5582092Z             {
2026-06-21T03:56:28.5582208Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5582287Z               "line": 285
2026-06-21T03:56:28.5582369Z             }
2026-06-21T03:56:28.5582451Z           ]
2026-06-21T03:56:28.5582528Z         },
2026-06-21T03:56:28.5582602Z         "unit": {
2026-06-21T03:56:28.5582692Z           "complete": true,
2026-06-21T03:56:28.5582768Z           "evidence": [
2026-06-21T03:56:28.5582854Z             {
2026-06-21T03:56:28.5582961Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5583047Z               "line": 229
2026-06-21T03:56:28.5583123Z             },
2026-06-21T03:56:28.5583201Z             {
2026-06-21T03:56:28.5583310Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5583492Z               "line": 296
2026-06-21T03:56:28.5583577Z             },
2026-06-21T03:56:28.5583744Z             {
2026-06-21T03:56:28.5583858Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5583939Z               "line": 419
2026-06-21T03:56:28.5584020Z             }
2026-06-21T03:56:28.5584102Z           ]
2026-06-21T03:56:28.5584182Z         }
2026-06-21T03:56:28.5584268Z       }
2026-06-21T03:56:28.5584344Z     },
2026-06-21T03:56:28.5584427Z     {
2026-06-21T03:56:28.5584521Z       "id": "REQ-HOST-RUN-2",
2026-06-21T03:56:28.5586182Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T03:56:28.5586286Z       "requiredStages": [
2026-06-21T03:56:28.5586368Z         "impl",
2026-06-21T03:56:28.5586440Z         "unit",
2026-06-21T03:56:28.5586515Z         "int"
2026-06-21T03:56:28.5586596Z       ],
2026-06-21T03:56:28.5586678Z       "stages": {
2026-06-21T03:56:28.5586768Z         "doc": {
2026-06-21T03:56:28.5586854Z           "complete": false,
2026-06-21T03:56:28.5586945Z           "evidence": []
2026-06-21T03:56:28.5587022Z         },
2026-06-21T03:56:28.5587107Z         "impl": {
2026-06-21T03:56:28.5587192Z           "complete": true,
2026-06-21T03:56:28.5587269Z           "evidence": [
2026-06-21T03:56:28.5587341Z             {
2026-06-21T03:56:28.5587464Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.5587560Z               "line": 182
2026-06-21T03:56:28.5587637Z             },
2026-06-21T03:56:28.5587726Z             {
2026-06-21T03:56:28.5587832Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.5587923Z               "line": 113
2026-06-21T03:56:28.5588004Z             }
2026-06-21T03:56:28.5588083Z           ]
2026-06-21T03:56:28.5588164Z         },
2026-06-21T03:56:28.5588245Z         "int": {
2026-06-21T03:56:28.5588332Z           "complete": true,
2026-06-21T03:56:28.5588408Z           "evidence": [
2026-06-21T03:56:28.5588493Z             {
2026-06-21T03:56:28.5588613Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5588694Z               "line": 572
2026-06-21T03:56:28.5588774Z             }
2026-06-21T03:56:28.5588855Z           ]
2026-06-21T03:56:28.5588937Z         },
2026-06-21T03:56:28.5589089Z         "unit": {
2026-06-21T03:56:28.5589184Z           "complete": true,
2026-06-21T03:56:28.5589266Z           "evidence": [
2026-06-21T03:56:28.5589342Z             {
2026-06-21T03:56:28.5589451Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:56:28.5589548Z               "line": 86
2026-06-21T03:56:28.5589629Z             }
2026-06-21T03:56:28.5589710Z           ]
2026-06-21T03:56:28.5589790Z         }
2026-06-21T03:56:28.5589872Z       }
2026-06-21T03:56:28.5589944Z     },
2026-06-21T03:56:28.5590023Z     {
2026-06-21T03:56:28.5590115Z       "id": "REQ-INFRA-1",
2026-06-21T03:56:28.5590277Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T03:56:28.5590361Z       "requiredStages": [],
2026-06-21T03:56:28.5590442Z       "stages": {
2026-06-21T03:56:28.5590523Z         "doc": {
2026-06-21T03:56:28.5590604Z           "complete": false,
2026-06-21T03:56:28.5590683Z           "evidence": []
2026-06-21T03:56:28.5590764Z         },
2026-06-21T03:56:28.5590845Z         "impl": {
2026-06-21T03:56:28.5590928Z           "complete": false,
2026-06-21T03:56:28.5591122Z           "evidence": []
2026-06-21T03:56:28.5591204Z         },
2026-06-21T03:56:28.5591275Z         "int": {
2026-06-21T03:56:28.5591466Z           "complete": false,
2026-06-21T03:56:28.5591546Z           "evidence": []
2026-06-21T03:56:28.5591627Z         },
2026-06-21T03:56:28.5591698Z         "unit": {
2026-06-21T03:56:28.5591781Z           "complete": false,
2026-06-21T03:56:28.5591861Z           "evidence": []
2026-06-21T03:56:28.5591942Z         }
2026-06-21T03:56:28.5592013Z       }
2026-06-21T03:56:28.5592095Z     },
2026-06-21T03:56:28.5592172Z     {
2026-06-21T03:56:28.5592257Z       "id": "REQ-INST-1",
2026-06-21T03:56:28.5592396Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T03:56:28.5592482Z       "requiredStages": [],
2026-06-21T03:56:28.5592571Z       "stages": {
2026-06-21T03:56:28.5592643Z         "doc": {
2026-06-21T03:56:28.5592730Z           "complete": false,
2026-06-21T03:56:28.5592820Z           "evidence": []
2026-06-21T03:56:28.5592905Z         },
2026-06-21T03:56:28.5592987Z         "impl": {
2026-06-21T03:56:28.5593069Z           "complete": false,
2026-06-21T03:56:28.5593154Z           "evidence": []
2026-06-21T03:56:28.5593238Z         },
2026-06-21T03:56:28.5593318Z         "int": {
2026-06-21T03:56:28.5593405Z           "complete": false,
2026-06-21T03:56:28.5593485Z           "evidence": []
2026-06-21T03:56:28.5593565Z         },
2026-06-21T03:56:28.5593645Z         "unit": {
2026-06-21T03:56:28.5593737Z           "complete": false,
2026-06-21T03:56:28.5593823Z           "evidence": []
2026-06-21T03:56:28.5593898Z         }
2026-06-21T03:56:28.5593974Z       }
2026-06-21T03:56:28.5594052Z     },
2026-06-21T03:56:28.5594123Z     {
2026-06-21T03:56:28.5594208Z       "id": "REQ-INST-10",
2026-06-21T03:56:28.5594413Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T03:56:28.5594508Z       "requiredStages": [
2026-06-21T03:56:28.5594585Z         "impl",
2026-06-21T03:56:28.5594672Z         "unit"
2026-06-21T03:56:28.5594752Z       ],
2026-06-21T03:56:28.5594828Z       "stages": {
2026-06-21T03:56:28.5594918Z         "doc": {
2026-06-21T03:56:28.5595011Z           "complete": false,
2026-06-21T03:56:28.5595100Z           "evidence": []
2026-06-21T03:56:28.5595176Z         },
2026-06-21T03:56:28.5595263Z         "impl": {
2026-06-21T03:56:28.5595340Z           "complete": true,
2026-06-21T03:56:28.5595438Z           "evidence": [
2026-06-21T03:56:28.5595510Z             {
2026-06-21T03:56:28.5595636Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5595720Z               "line": 648
2026-06-21T03:56:28.5595800Z             },
2026-06-21T03:56:28.5595885Z             {
2026-06-21T03:56:28.5596009Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5596093Z               "line": 725
2026-06-21T03:56:28.5596207Z             },
2026-06-21T03:56:28.5596294Z             {
2026-06-21T03:56:28.5596399Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5596488Z               "line": 13
2026-06-21T03:56:28.5596570Z             },
2026-06-21T03:56:28.5596647Z             {
2026-06-21T03:56:28.5596760Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5596841Z               "line": 67
2026-06-21T03:56:28.5596924Z             },
2026-06-21T03:56:28.5597009Z             {
2026-06-21T03:56:28.5597104Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5597190Z               "line": 18
2026-06-21T03:56:28.5597257Z             },
2026-06-21T03:56:28.5597347Z             {
2026-06-21T03:56:28.5597452Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5597534Z               "line": 444
2026-06-21T03:56:28.5597614Z             }
2026-06-21T03:56:28.5597695Z           ]
2026-06-21T03:56:28.5597771Z         },
2026-06-21T03:56:28.5597849Z         "int": {
2026-06-21T03:56:28.5597934Z           "complete": false,
2026-06-21T03:56:28.5598019Z           "evidence": []
2026-06-21T03:56:28.5598173Z         },
2026-06-21T03:56:28.5598258Z         "unit": {
2026-06-21T03:56:28.5598334Z           "complete": true,
2026-06-21T03:56:28.5598498Z           "evidence": [
2026-06-21T03:56:28.5598583Z             {
2026-06-21T03:56:28.5598695Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5598777Z               "line": 932
2026-06-21T03:56:28.5598858Z             },
2026-06-21T03:56:28.5599062Z             {
2026-06-21T03:56:28.5599168Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5599244Z               "line": 1309
2026-06-21T03:56:28.5599325Z             },
2026-06-21T03:56:28.5599401Z             {
2026-06-21T03:56:28.5599507Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5599588Z               "line": 1320
2026-06-21T03:56:28.5599668Z             },
2026-06-21T03:56:28.5599749Z             {
2026-06-21T03:56:28.5599869Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5599950Z               "line": 1336
2026-06-21T03:56:28.5600030Z             },
2026-06-21T03:56:28.5600122Z             {
2026-06-21T03:56:28.5600226Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5600307Z               "line": 1352
2026-06-21T03:56:28.5600389Z             },
2026-06-21T03:56:28.5600470Z             {
2026-06-21T03:56:28.5600569Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5600660Z               "line": 1374
2026-06-21T03:56:28.5600743Z             },
2026-06-21T03:56:28.5600818Z             {
2026-06-21T03:56:28.5600936Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5601007Z               "line": 1679
2026-06-21T03:56:28.5601088Z             },
2026-06-21T03:56:28.5601159Z             {
2026-06-21T03:56:28.5601267Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5601353Z               "line": 130
2026-06-21T03:56:28.5601435Z             },
2026-06-21T03:56:28.5601515Z             {
2026-06-21T03:56:28.5601620Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5601715Z               "line": 167
2026-06-21T03:56:28.5601796Z             },
2026-06-21T03:56:28.5601868Z             {
2026-06-21T03:56:28.5601977Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5602060Z               "line": 175
2026-06-21T03:56:28.5602140Z             },
2026-06-21T03:56:28.5602211Z             {
2026-06-21T03:56:28.5602322Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T03:56:28.5602412Z               "line": 183
2026-06-21T03:56:28.5602488Z             },
2026-06-21T03:56:28.5602573Z             {
2026-06-21T03:56:28.5602674Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5602769Z               "line": 896
2026-06-21T03:56:28.5602850Z             }
2026-06-21T03:56:28.5602936Z           ]
2026-06-21T03:56:28.5603018Z         }
2026-06-21T03:56:28.5603103Z       }
2026-06-21T03:56:28.5603193Z     },
2026-06-21T03:56:28.5603271Z     {
2026-06-21T03:56:28.5603352Z       "id": "REQ-INST-11",
2026-06-21T03:56:28.5603561Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T03:56:28.5603657Z       "requiredStages": [
2026-06-21T03:56:28.5603742Z         "impl",
2026-06-21T03:56:28.5603812Z         "unit"
2026-06-21T03:56:28.5603893Z       ],
2026-06-21T03:56:28.5603979Z       "stages": {
2026-06-21T03:56:28.5604064Z         "doc": {
2026-06-21T03:56:28.5604148Z           "complete": false,
2026-06-21T03:56:28.5604235Z           "evidence": []
2026-06-21T03:56:28.5604325Z         },
2026-06-21T03:56:28.5604406Z         "impl": {
2026-06-21T03:56:28.5604496Z           "complete": true,
2026-06-21T03:56:28.5604583Z           "evidence": [
2026-06-21T03:56:28.5604659Z             {
2026-06-21T03:56:28.5604768Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5604854Z               "line": 514
2026-06-21T03:56:28.5605036Z             },
2026-06-21T03:56:28.5605116Z             {
2026-06-21T03:56:28.5605237Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5605417Z               "line": 297
2026-06-21T03:56:28.5605498Z             },
2026-06-21T03:56:28.5605571Z             {
2026-06-21T03:56:28.5605688Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:56:28.5605775Z               "line": 59
2026-06-21T03:56:28.5605852Z             },
2026-06-21T03:56:28.5605937Z             {
2026-06-21T03:56:28.5606032Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5606109Z               "line": 5291
2026-06-21T03:56:28.5606181Z             },
2026-06-21T03:56:28.5606266Z             {
2026-06-21T03:56:28.5606370Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5606455Z               "line": 7137
2026-06-21T03:56:28.5606537Z             }
2026-06-21T03:56:28.5606616Z           ]
2026-06-21T03:56:28.5606701Z         },
2026-06-21T03:56:28.5606787Z         "int": {
2026-06-21T03:56:28.5606868Z           "complete": false,
2026-06-21T03:56:28.5606954Z           "evidence": []
2026-06-21T03:56:28.5607039Z         },
2026-06-21T03:56:28.5607121Z         "unit": {
2026-06-21T03:56:28.5607212Z           "complete": true,
2026-06-21T03:56:28.5607292Z           "evidence": [
2026-06-21T03:56:28.5607373Z             {
2026-06-21T03:56:28.5607494Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5607579Z               "line": 1479
2026-06-21T03:56:28.5607649Z             },
2026-06-21T03:56:28.5607726Z             {
2026-06-21T03:56:28.5607836Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5607922Z               "line": 1512
2026-06-21T03:56:28.5608003Z             },
2026-06-21T03:56:28.5608079Z             {
2026-06-21T03:56:28.5608203Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5608284Z               "line": 527
2026-06-21T03:56:28.5608360Z             },
2026-06-21T03:56:28.5608448Z             {
2026-06-21T03:56:28.5608560Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:56:28.5608656Z               "line": 160
2026-06-21T03:56:28.5608738Z             },
2026-06-21T03:56:28.5608823Z             {
2026-06-21T03:56:28.5608933Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:56:28.5609092Z               "line": 190
2026-06-21T03:56:28.5609166Z             },
2026-06-21T03:56:28.5609247Z             {
2026-06-21T03:56:28.5609346Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T03:56:28.5609428Z               "line": 225
2026-06-21T03:56:28.5609509Z             },
2026-06-21T03:56:28.5609585Z             {
2026-06-21T03:56:28.5609690Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5609776Z               "line": 7994
2026-06-21T03:56:28.5609861Z             }
2026-06-21T03:56:28.5609942Z           ]
2026-06-21T03:56:28.5610025Z         }
2026-06-21T03:56:28.5610110Z       }
2026-06-21T03:56:28.5610190Z     },
2026-06-21T03:56:28.5610276Z     {
2026-06-21T03:56:28.5610368Z       "id": "REQ-INST-12",
2026-06-21T03:56:28.5610654Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T03:56:28.5610739Z       "requiredStages": [
2026-06-21T03:56:28.5610830Z         "impl",
2026-06-21T03:56:28.5610910Z         "unit"
2026-06-21T03:56:28.5610993Z       ],
2026-06-21T03:56:28.5611073Z       "stages": {
2026-06-21T03:56:28.5611153Z         "doc": {
2026-06-21T03:56:28.5611240Z           "complete": false,
2026-06-21T03:56:28.5611322Z           "evidence": []
2026-06-21T03:56:28.5611406Z         },
2026-06-21T03:56:28.5611491Z         "impl": {
2026-06-21T03:56:28.5611581Z           "complete": true,
2026-06-21T03:56:28.5611672Z           "evidence": [
2026-06-21T03:56:28.5611752Z             {
2026-06-21T03:56:28.5611875Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5611952Z               "line": 566
2026-06-21T03:56:28.5612142Z             },
2026-06-21T03:56:28.5612223Z             {
2026-06-21T03:56:28.5612428Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5612518Z               "line": 659
2026-06-21T03:56:28.5612596Z             },
2026-06-21T03:56:28.5612677Z             {
2026-06-21T03:56:28.5612790Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5612872Z               "line": 739
2026-06-21T03:56:28.5612949Z             },
2026-06-21T03:56:28.5613024Z             {
2026-06-21T03:56:28.5613128Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5613211Z               "line": 96
2026-06-21T03:56:28.5613296Z             },
2026-06-21T03:56:28.5613368Z             {
2026-06-21T03:56:28.5613482Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5613564Z               "line": 269
2026-06-21T03:56:28.5613644Z             },
2026-06-21T03:56:28.5613726Z             {
2026-06-21T03:56:28.5613846Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5613936Z               "line": 148
2026-06-21T03:56:28.5614025Z             }
2026-06-21T03:56:28.5614107Z           ]
2026-06-21T03:56:28.5614189Z         },
2026-06-21T03:56:28.5614269Z         "int": {
2026-06-21T03:56:28.5614368Z           "complete": false,
2026-06-21T03:56:28.5614453Z           "evidence": []
2026-06-21T03:56:28.5614525Z         },
2026-06-21T03:56:28.5614605Z         "unit": {
2026-06-21T03:56:28.5614689Z           "complete": true,
2026-06-21T03:56:28.5614780Z           "evidence": [
2026-06-21T03:56:28.5614862Z             {
2026-06-21T03:56:28.5614971Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5615047Z               "line": 1554
2026-06-21T03:56:28.5615129Z             },
2026-06-21T03:56:28.5615205Z             {
2026-06-21T03:56:28.5615314Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5615395Z               "line": 1577
2026-06-21T03:56:28.5615482Z             },
2026-06-21T03:56:28.5615557Z             {
2026-06-21T03:56:28.5615666Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5615743Z               "line": 1614
2026-06-21T03:56:28.5615830Z             },
2026-06-21T03:56:28.5615905Z             {
2026-06-21T03:56:28.5616015Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5616102Z               "line": 457
2026-06-21T03:56:28.5616178Z             },
2026-06-21T03:56:28.5616253Z             {
2026-06-21T03:56:28.5616368Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5616445Z               "line": 185
2026-06-21T03:56:28.5616521Z             },
2026-06-21T03:56:28.5616607Z             {
2026-06-21T03:56:28.5616722Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5616813Z               "line": 206
2026-06-21T03:56:28.5616892Z             },
2026-06-21T03:56:28.5616977Z             {
2026-06-21T03:56:28.5617101Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5617181Z               "line": 232
2026-06-21T03:56:28.5617270Z             }
2026-06-21T03:56:28.5617347Z           ]
2026-06-21T03:56:28.5617433Z         }
2026-06-21T03:56:28.5617505Z       }
2026-06-21T03:56:28.5617590Z     },
2026-06-21T03:56:28.5617676Z     {
2026-06-21T03:56:28.5617762Z       "id": "REQ-INST-13",
2026-06-21T03:56:28.5617943Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T03:56:28.5618035Z       "requiredStages": [
2026-06-21T03:56:28.5618115Z         "impl",
2026-06-21T03:56:28.5618195Z         "unit"
2026-06-21T03:56:28.5618281Z       ],
2026-06-21T03:56:28.5618368Z       "stages": {
2026-06-21T03:56:28.5618448Z         "doc": {
2026-06-21T03:56:28.5618538Z           "complete": false,
2026-06-21T03:56:28.5618615Z           "evidence": []
2026-06-21T03:56:28.5618698Z         },
2026-06-21T03:56:28.5618777Z         "impl": {
2026-06-21T03:56:28.5619031Z           "complete": true,
2026-06-21T03:56:28.5619120Z           "evidence": [
2026-06-21T03:56:28.5619298Z             {
2026-06-21T03:56:28.5619416Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5619493Z               "line": 100
2026-06-21T03:56:28.5619575Z             },
2026-06-21T03:56:28.5619656Z             {
2026-06-21T03:56:28.5619778Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5619863Z               "line": 171
2026-06-21T03:56:28.5619940Z             }
2026-06-21T03:56:28.5620022Z           ]
2026-06-21T03:56:28.5620102Z         },
2026-06-21T03:56:28.5620182Z         "int": {
2026-06-21T03:56:28.5620264Z           "complete": false,
2026-06-21T03:56:28.5620360Z           "evidence": []
2026-06-21T03:56:28.5620431Z         },
2026-06-21T03:56:28.5620511Z         "unit": {
2026-06-21T03:56:28.5620599Z           "complete": true,
2026-06-21T03:56:28.5620684Z           "evidence": [
2026-06-21T03:56:28.5620779Z             {
2026-06-21T03:56:28.5620879Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5620984Z               "line": 261
2026-06-21T03:56:28.5621070Z             },
2026-06-21T03:56:28.5621146Z             {
2026-06-21T03:56:28.5621262Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T03:56:28.5621337Z               "line": 279
2026-06-21T03:56:28.5621423Z             }
2026-06-21T03:56:28.5621500Z           ]
2026-06-21T03:56:28.5621586Z         }
2026-06-21T03:56:28.5621666Z       }
2026-06-21T03:56:28.5621742Z     },
2026-06-21T03:56:28.5621824Z     {
2026-06-21T03:56:28.5621905Z       "id": "REQ-INST-14",
2026-06-21T03:56:28.5622260Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T03:56:28.5622345Z       "requiredStages": [
2026-06-21T03:56:28.5622425Z         "doc",
2026-06-21T03:56:28.5622512Z         "impl",
2026-06-21T03:56:28.5622593Z         "unit"
2026-06-21T03:56:28.5622669Z       ],
2026-06-21T03:56:28.5622744Z       "stages": {
2026-06-21T03:56:28.5622827Z         "doc": {
2026-06-21T03:56:28.5622917Z           "complete": true,
2026-06-21T03:56:28.5622998Z           "evidence": [
2026-06-21T03:56:28.5623088Z             {
2026-06-21T03:56:28.5623170Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5623256Z               "line": 588
2026-06-21T03:56:28.5623336Z             },
2026-06-21T03:56:28.5623418Z             {
2026-06-21T03:56:28.5623518Z               "path": "docs/STORAGE.md",
2026-06-21T03:56:28.5623599Z               "line": 49
2026-06-21T03:56:28.5623684Z             }
2026-06-21T03:56:28.5623756Z           ]
2026-06-21T03:56:28.5623842Z         },
2026-06-21T03:56:28.5623913Z         "impl": {
2026-06-21T03:56:28.5624004Z           "complete": true,
2026-06-21T03:56:28.5624081Z           "evidence": [
2026-06-21T03:56:28.5624162Z             {
2026-06-21T03:56:28.5624290Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5624381Z               "line": 410
2026-06-21T03:56:28.5624467Z             },
2026-06-21T03:56:28.5624547Z             {
2026-06-21T03:56:28.5624662Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5624745Z               "line": 367
2026-06-21T03:56:28.5624825Z             },
2026-06-21T03:56:28.5624909Z             {
2026-06-21T03:56:28.5625009Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5625085Z               "line": 293
2026-06-21T03:56:28.5625156Z             },
2026-06-21T03:56:28.5625236Z             {
2026-06-21T03:56:28.5627774Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5627887Z               "line": 1577
2026-06-21T03:56:28.5627969Z             }
2026-06-21T03:56:28.5628042Z           ]
2026-06-21T03:56:28.5628126Z         },
2026-06-21T03:56:28.5628198Z         "int": {
2026-06-21T03:56:28.5628294Z           "complete": false,
2026-06-21T03:56:28.5628375Z           "evidence": []
2026-06-21T03:56:28.5628590Z         },
2026-06-21T03:56:28.5628675Z         "unit": {
2026-06-21T03:56:28.5628832Z           "complete": true,
2026-06-21T03:56:28.5628919Z           "evidence": [
2026-06-21T03:56:28.5629061Z             {
2026-06-21T03:56:28.5629200Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5629286Z               "line": 1163
2026-06-21T03:56:28.5629352Z             },
2026-06-21T03:56:28.5629437Z             {
2026-06-21T03:56:28.5629558Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5629652Z               "line": 944
2026-06-21T03:56:28.5629733Z             },
2026-06-21T03:56:28.5629810Z             {
2026-06-21T03:56:28.5629930Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5630004Z               "line": 1205
2026-06-21T03:56:28.5630086Z             },
2026-06-21T03:56:28.5630168Z             {
2026-06-21T03:56:28.5630282Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5630371Z               "line": 659
2026-06-21T03:56:28.5630452Z             },
2026-06-21T03:56:28.5630544Z             {
2026-06-21T03:56:28.5630643Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5630724Z               "line": 8070
2026-06-21T03:56:28.5630801Z             }
2026-06-21T03:56:28.5630882Z           ]
2026-06-21T03:56:28.5630958Z         }
2026-06-21T03:56:28.5631039Z       }
2026-06-21T03:56:28.5631120Z     },
2026-06-21T03:56:28.5631197Z     {
2026-06-21T03:56:28.5631287Z       "id": "REQ-INST-15",
2026-06-21T03:56:28.5631978Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T03:56:28.5632065Z       "requiredStages": [
2026-06-21T03:56:28.5632146Z         "doc",
2026-06-21T03:56:28.5632226Z         "impl",
2026-06-21T03:56:28.5632317Z         "unit"
2026-06-21T03:56:28.5632389Z       ],
2026-06-21T03:56:28.5632466Z       "stages": {
2026-06-21T03:56:28.5632559Z         "doc": {
2026-06-21T03:56:28.5632640Z           "complete": true,
2026-06-21T03:56:28.5632721Z           "evidence": [
2026-06-21T03:56:28.5632806Z             {
2026-06-21T03:56:28.5632975Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T03:56:28.5633057Z               "line": 3
2026-06-21T03:56:28.5633139Z             }
2026-06-21T03:56:28.5633219Z           ]
2026-06-21T03:56:28.5633300Z         },
2026-06-21T03:56:28.5633377Z         "impl": {
2026-06-21T03:56:28.5633463Z           "complete": true,
2026-06-21T03:56:28.5633544Z           "evidence": [
2026-06-21T03:56:28.5633624Z             {
2026-06-21T03:56:28.5633754Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5633835Z               "line": 353
2026-06-21T03:56:28.5633915Z             },
2026-06-21T03:56:28.5633997Z             {
2026-06-21T03:56:28.5634102Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5634178Z               "line": 60
2026-06-21T03:56:28.5634258Z             },
2026-06-21T03:56:28.5634341Z             {
2026-06-21T03:56:28.5634464Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5634555Z               "line": 368
2026-06-21T03:56:28.5634636Z             },
2026-06-21T03:56:28.5634698Z             {
2026-06-21T03:56:28.5634821Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5634902Z               "line": 417
2026-06-21T03:56:28.5634980Z             },
2026-06-21T03:56:28.5635060Z             {
2026-06-21T03:56:28.5635165Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5635252Z               "line": 19
2026-06-21T03:56:28.5635328Z             },
2026-06-21T03:56:28.5635408Z             {
2026-06-21T03:56:28.5635497Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5635697Z               "line": 70
2026-06-21T03:56:28.5635777Z             },
2026-06-21T03:56:28.5635958Z             {
2026-06-21T03:56:28.5636063Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5636143Z               "line": 96
2026-06-21T03:56:28.5636229Z             },
2026-06-21T03:56:28.5636307Z             {
2026-06-21T03:56:28.5636411Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5636491Z               "line": 121
2026-06-21T03:56:28.5636574Z             },
2026-06-21T03:56:28.5636654Z             {
2026-06-21T03:56:28.5636749Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5636840Z               "line": 172
2026-06-21T03:56:28.5636917Z             },
2026-06-21T03:56:28.5637002Z             {
2026-06-21T03:56:28.5637098Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5637179Z               "line": 178
2026-06-21T03:56:28.5637260Z             },
2026-06-21T03:56:28.5637345Z             {
2026-06-21T03:56:28.5637445Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5637528Z               "line": 1469
2026-06-21T03:56:28.5637618Z             }
2026-06-21T03:56:28.5637697Z           ]
2026-06-21T03:56:28.5637774Z         },
2026-06-21T03:56:28.5637857Z         "int": {
2026-06-21T03:56:28.5637942Z           "complete": false,
2026-06-21T03:56:28.5638031Z           "evidence": []
2026-06-21T03:56:28.5638107Z         },
2026-06-21T03:56:28.5638188Z         "unit": {
2026-06-21T03:56:28.5638264Z           "complete": true,
2026-06-21T03:56:28.5638353Z           "evidence": [
2026-06-21T03:56:28.5638434Z             {
2026-06-21T03:56:28.5638554Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5638640Z               "line": 577
2026-06-21T03:56:28.5638719Z             },
2026-06-21T03:56:28.5638801Z             {
2026-06-21T03:56:28.5638916Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.5639087Z               "line": 638
2026-06-21T03:56:28.5639159Z             },
2026-06-21T03:56:28.5639240Z             {
2026-06-21T03:56:28.5639358Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5639436Z               "line": 213
2026-06-21T03:56:28.5639517Z             },
2026-06-21T03:56:28.5639597Z             {
2026-06-21T03:56:28.5639707Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5639784Z               "line": 249
2026-06-21T03:56:28.5639865Z             },
2026-06-21T03:56:28.5639951Z             {
2026-06-21T03:56:28.5640050Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5640132Z               "line": 262
2026-06-21T03:56:28.5640217Z             },
2026-06-21T03:56:28.5640298Z             {
2026-06-21T03:56:28.5640405Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T03:56:28.5640485Z               "line": 338
2026-06-21T03:56:28.5640565Z             },
2026-06-21T03:56:28.5640646Z             {
2026-06-21T03:56:28.5640762Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5640852Z               "line": 690
2026-06-21T03:56:28.5640936Z             },
2026-06-21T03:56:28.5641017Z             {
2026-06-21T03:56:28.5641113Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5641194Z               "line": 8007
2026-06-21T03:56:28.5641274Z             },
2026-06-21T03:56:28.5641361Z             {
2026-06-21T03:56:28.5641461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5641537Z               "line": 9837
2026-06-21T03:56:28.5641618Z             }
2026-06-21T03:56:28.5641700Z           ]
2026-06-21T03:56:28.5641780Z         }
2026-06-21T03:56:28.5641861Z       }
2026-06-21T03:56:28.5641947Z     },
2026-06-21T03:56:28.5642024Z     {
2026-06-21T03:56:28.5642105Z       "id": "REQ-INST-2",
2026-06-21T03:56:28.5642228Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T03:56:28.5642320Z       "requiredStages": [
2026-06-21T03:56:28.5642406Z         "impl",
2026-06-21T03:56:28.5642591Z         "unit"
2026-06-21T03:56:28.5642678Z       ],
2026-06-21T03:56:28.5642762Z       "stages": {
2026-06-21T03:56:28.5642939Z         "doc": {
2026-06-21T03:56:28.5643022Z           "complete": false,
2026-06-21T03:56:28.5643105Z           "evidence": []
2026-06-21T03:56:28.5643186Z         },
2026-06-21T03:56:28.5643267Z         "impl": {
2026-06-21T03:56:28.5643357Z           "complete": true,
2026-06-21T03:56:28.5643436Z           "evidence": [
2026-06-21T03:56:28.5643513Z             {
2026-06-21T03:56:28.5643632Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5643719Z               "line": 108
2026-06-21T03:56:28.5643803Z             },
2026-06-21T03:56:28.5643879Z             {
2026-06-21T03:56:28.5643985Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5644071Z               "line": 28
2026-06-21T03:56:28.5644146Z             },
2026-06-21T03:56:28.5644218Z             {
2026-06-21T03:56:28.5644333Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5644418Z               "line": 74
2026-06-21T03:56:28.5644499Z             },
2026-06-21T03:56:28.5644582Z             {
2026-06-21T03:56:28.5644681Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5644762Z               "line": 96
2026-06-21T03:56:28.5644843Z             },
2026-06-21T03:56:28.5644920Z             {
2026-06-21T03:56:28.5645029Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.5645105Z               "line": 86
2026-06-21T03:56:28.5645192Z             },
2026-06-21T03:56:28.5645273Z             {
2026-06-21T03:56:28.5645377Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T03:56:28.5645463Z               "line": 118
2026-06-21T03:56:28.5645540Z             }
2026-06-21T03:56:28.5645625Z           ]
2026-06-21T03:56:28.5645706Z         },
2026-06-21T03:56:28.5645787Z         "int": {
2026-06-21T03:56:28.5645879Z           "complete": false,
2026-06-21T03:56:28.5645968Z           "evidence": []
2026-06-21T03:56:28.5646053Z         },
2026-06-21T03:56:28.5646134Z         "unit": {
2026-06-21T03:56:28.5646229Z           "complete": true,
2026-06-21T03:56:28.5646313Z           "evidence": [
2026-06-21T03:56:28.5646389Z             {
2026-06-21T03:56:28.5646489Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T03:56:28.5646571Z               "line": 250
2026-06-21T03:56:28.5646656Z             },
2026-06-21T03:56:28.5646722Z             {
2026-06-21T03:56:28.5646834Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.5646914Z               "line": 280
2026-06-21T03:56:28.5646994Z             }
2026-06-21T03:56:28.5647075Z           ]
2026-06-21T03:56:28.5647149Z         }
2026-06-21T03:56:28.5647229Z       }
2026-06-21T03:56:28.5647309Z     },
2026-06-21T03:56:28.5647390Z     {
2026-06-21T03:56:28.5647468Z       "id": "REQ-INST-3",
2026-06-21T03:56:28.5647615Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T03:56:28.5647715Z       "requiredStages": [
2026-06-21T03:56:28.5647788Z         "doc",
2026-06-21T03:56:28.5647877Z         "impl",
2026-06-21T03:56:28.5647953Z         "unit"
2026-06-21T03:56:28.5648029Z       ],
2026-06-21T03:56:28.5648117Z       "stages": {
2026-06-21T03:56:28.5648192Z         "doc": {
2026-06-21T03:56:28.5648287Z           "complete": true,
2026-06-21T03:56:28.5648364Z           "evidence": [
2026-06-21T03:56:28.5648445Z             {
2026-06-21T03:56:28.5648544Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T03:56:28.5648624Z               "line": 3
2026-06-21T03:56:28.5648705Z             }
2026-06-21T03:56:28.5648786Z           ]
2026-06-21T03:56:28.5648871Z         },
2026-06-21T03:56:28.5649027Z         "impl": {
2026-06-21T03:56:28.5649114Z           "complete": true,
2026-06-21T03:56:28.5649200Z           "evidence": [
2026-06-21T03:56:28.5649284Z             {
2026-06-21T03:56:28.5649405Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5649623Z               "line": 59
2026-06-21T03:56:28.5649705Z             },
2026-06-21T03:56:28.5649781Z             {
2026-06-21T03:56:28.5649991Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.5650072Z               "line": 480
2026-06-21T03:56:28.5650152Z             },
2026-06-21T03:56:28.5650233Z             {
2026-06-21T03:56:28.5650354Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5650439Z               "line": 254
2026-06-21T03:56:28.5650516Z             },
2026-06-21T03:56:28.5650591Z             {
2026-06-21T03:56:28.5650702Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5650787Z               "line": 384
2026-06-21T03:56:28.5650868Z             },
2026-06-21T03:56:28.5650950Z             {
2026-06-21T03:56:28.5651069Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5651149Z               "line": 418
2026-06-21T03:56:28.5651231Z             },
2026-06-21T03:56:28.5651322Z             {
2026-06-21T03:56:28.5651430Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T03:56:28.5651520Z               "line": 74
2026-06-21T03:56:28.5651601Z             },
2026-06-21T03:56:28.5651678Z             {
2026-06-21T03:56:28.5651801Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5651882Z               "line": 234
2026-06-21T03:56:28.5651959Z             },
2026-06-21T03:56:28.5652040Z             {
2026-06-21T03:56:28.5652159Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5652236Z               "line": 396
2026-06-21T03:56:28.5652318Z             },
2026-06-21T03:56:28.5652399Z             {
2026-06-21T03:56:28.5652502Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5652584Z               "line": 45
2026-06-21T03:56:28.5652670Z             },
2026-06-21T03:56:28.5652741Z             {
2026-06-21T03:56:28.5652841Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5652933Z               "line": 114
2026-06-21T03:56:28.5653012Z             },
2026-06-21T03:56:28.5653098Z             {
2026-06-21T03:56:28.5653200Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5653285Z               "line": 152
2026-06-21T03:56:28.5653370Z             },
2026-06-21T03:56:28.5653446Z             {
2026-06-21T03:56:28.5653553Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5653628Z               "line": 168
2026-06-21T03:56:28.5653708Z             },
2026-06-21T03:56:28.5653784Z             {
2026-06-21T03:56:28.5653894Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5653974Z               "line": 178
2026-06-21T03:56:28.5654049Z             },
2026-06-21T03:56:28.5654129Z             {
2026-06-21T03:56:28.5654235Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5654321Z               "line": 210
2026-06-21T03:56:28.5654406Z             },
2026-06-21T03:56:28.5654488Z             {
2026-06-21T03:56:28.5654593Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5654687Z               "line": 287
2026-06-21T03:56:28.5654768Z             },
2026-06-21T03:56:28.5654851Z             {
2026-06-21T03:56:28.5654960Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5655040Z               "line": 311
2026-06-21T03:56:28.5655118Z             },
2026-06-21T03:56:28.5655203Z             {
2026-06-21T03:56:28.5655312Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5655393Z               "line": 389
2026-06-21T03:56:28.5655471Z             },
2026-06-21T03:56:28.5655551Z             {
2026-06-21T03:56:28.5655655Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5655747Z               "line": 438
2026-06-21T03:56:28.5655829Z             },
2026-06-21T03:56:28.5655908Z             {
2026-06-21T03:56:28.5656023Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T03:56:28.5656185Z               "line": 37
2026-06-21T03:56:28.5656256Z             },
2026-06-21T03:56:28.5656405Z             {
2026-06-21T03:56:28.5656533Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5656618Z               "line": 62
2026-06-21T03:56:28.5656704Z             },
2026-06-21T03:56:28.5656785Z             {
2026-06-21T03:56:28.5656892Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5656973Z               "line": 279
2026-06-21T03:56:28.5657054Z             },
2026-06-21T03:56:28.5657136Z             {
2026-06-21T03:56:28.5657231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5657311Z               "line": 1848
2026-06-21T03:56:28.5657384Z             }
2026-06-21T03:56:28.5657465Z           ]
2026-06-21T03:56:28.5657545Z         },
2026-06-21T03:56:28.5657630Z         "int": {
2026-06-21T03:56:28.5657709Z           "complete": false,
2026-06-21T03:56:28.5657803Z           "evidence": []
2026-06-21T03:56:28.5657883Z         },
2026-06-21T03:56:28.5657960Z         "unit": {
2026-06-21T03:56:28.5658056Z           "complete": true,
2026-06-21T03:56:28.5658141Z           "evidence": [
2026-06-21T03:56:28.5658227Z             {
2026-06-21T03:56:28.5658338Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.5658428Z               "line": 360
2026-06-21T03:56:28.5658508Z             },
2026-06-21T03:56:28.5658584Z             {
2026-06-21T03:56:28.5658691Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5658785Z               "line": 837
2026-06-21T03:56:28.5658866Z             },
2026-06-21T03:56:28.5659029Z             {
2026-06-21T03:56:28.5659147Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5659227Z               "line": 894
2026-06-21T03:56:28.5659309Z             },
2026-06-21T03:56:28.5659389Z             {
2026-06-21T03:56:28.5659502Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5659583Z               "line": 889
2026-06-21T03:56:28.5659664Z             },
2026-06-21T03:56:28.5659750Z             {
2026-06-21T03:56:28.5659859Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5659946Z               "line": 1014
2026-06-21T03:56:28.5660027Z             },
2026-06-21T03:56:28.5660112Z             {
2026-06-21T03:56:28.5660226Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5660317Z               "line": 1264
2026-06-21T03:56:28.5660389Z             },
2026-06-21T03:56:28.5660460Z             {
2026-06-21T03:56:28.5660581Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5660656Z               "line": 1405
2026-06-21T03:56:28.5660737Z             },
2026-06-21T03:56:28.5660817Z             {
2026-06-21T03:56:28.5660928Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5661018Z               "line": 449
2026-06-21T03:56:28.5661094Z             },
2026-06-21T03:56:28.5661176Z             {
2026-06-21T03:56:28.5661338Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5661423Z               "line": 485
2026-06-21T03:56:28.5661496Z             },
2026-06-21T03:56:28.5661572Z             {
2026-06-21T03:56:28.5661676Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5661757Z               "line": 540
2026-06-21T03:56:28.5661835Z             },
2026-06-21T03:56:28.5661916Z             {
2026-06-21T03:56:28.5662042Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5662166Z               "line": 697
2026-06-21T03:56:28.5662253Z             },
2026-06-21T03:56:28.5662333Z             {
2026-06-21T03:56:28.5662443Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5662529Z               "line": 931
2026-06-21T03:56:28.5662610Z             },
2026-06-21T03:56:28.5662691Z             {
2026-06-21T03:56:28.5662801Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5662987Z               "line": 945
2026-06-21T03:56:28.5663154Z             },
2026-06-21T03:56:28.5663235Z             {
2026-06-21T03:56:28.5663348Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5663435Z               "line": 1290
2026-06-21T03:56:28.5663516Z             },
2026-06-21T03:56:28.5663596Z             {
2026-06-21T03:56:28.5663706Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.5663798Z               "line": 609
2026-06-21T03:56:28.5663879Z             },
2026-06-21T03:56:28.5663959Z             {
2026-06-21T03:56:28.5664059Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5664137Z               "line": 8031
2026-06-21T03:56:28.5664212Z             }
2026-06-21T03:56:28.5664287Z           ]
2026-06-21T03:56:28.5664367Z         }
2026-06-21T03:56:28.5664444Z       }
2026-06-21T03:56:28.5664525Z     },
2026-06-21T03:56:28.5664609Z     {
2026-06-21T03:56:28.5664709Z       "id": "REQ-INST-4",
2026-06-21T03:56:28.5664872Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T03:56:28.5664966Z       "requiredStages": [
2026-06-21T03:56:28.5665048Z         "impl",
2026-06-21T03:56:28.5665129Z         "unit"
2026-06-21T03:56:28.5665215Z       ],
2026-06-21T03:56:28.5665300Z       "stages": {
2026-06-21T03:56:28.5665382Z         "doc": {
2026-06-21T03:56:28.5665482Z           "complete": false,
2026-06-21T03:56:28.5665567Z           "evidence": []
2026-06-21T03:56:28.5665648Z         },
2026-06-21T03:56:28.5665730Z         "impl": {
2026-06-21T03:56:28.5665825Z           "complete": true,
2026-06-21T03:56:28.5665958Z           "evidence": [
2026-06-21T03:56:28.5666040Z             {
2026-06-21T03:56:28.5666159Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5666244Z               "line": 385
2026-06-21T03:56:28.5666327Z             },
2026-06-21T03:56:28.5666398Z             {
2026-06-21T03:56:28.5666516Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5666597Z               "line": 202
2026-06-21T03:56:28.5666689Z             },
2026-06-21T03:56:28.5666773Z             {
2026-06-21T03:56:28.5666879Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5666966Z               "line": 234
2026-06-21T03:56:28.5667042Z             },
2026-06-21T03:56:28.5667121Z             {
2026-06-21T03:56:28.5667234Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5667316Z               "line": 274
2026-06-21T03:56:28.5667396Z             }
2026-06-21T03:56:28.5667476Z           ]
2026-06-21T03:56:28.5667556Z         },
2026-06-21T03:56:28.5667634Z         "int": {
2026-06-21T03:56:28.5667715Z           "complete": false,
2026-06-21T03:56:28.5667795Z           "evidence": []
2026-06-21T03:56:28.5667876Z         },
2026-06-21T03:56:28.5667959Z         "unit": {
2026-06-21T03:56:28.5668039Z           "complete": true,
2026-06-21T03:56:28.5668138Z           "evidence": [
2026-06-21T03:56:28.5668215Z             {
2026-06-21T03:56:28.5668339Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5668434Z               "line": 889
2026-06-21T03:56:28.5668510Z             },
2026-06-21T03:56:28.5668588Z             {
2026-06-21T03:56:28.5668692Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5668782Z               "line": 561
2026-06-21T03:56:28.5668859Z             },
2026-06-21T03:56:28.5669030Z             {
2026-06-21T03:56:28.5669145Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5669232Z               "line": 668
2026-06-21T03:56:28.5669312Z             },
2026-06-21T03:56:28.5669393Z             {
2026-06-21T03:56:28.5669499Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5669580Z               "line": 750
2026-06-21T03:56:28.5669669Z             }
2026-06-21T03:56:28.5669749Z           ]
2026-06-21T03:56:28.5669826Z         }
2026-06-21T03:56:28.5670009Z       }
2026-06-21T03:56:28.5670090Z     },
2026-06-21T03:56:28.5670171Z     {
2026-06-21T03:56:28.5670358Z       "id": "REQ-INST-5",
2026-06-21T03:56:28.5670534Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T03:56:28.5670625Z       "requiredStages": [
2026-06-21T03:56:28.5670710Z         "impl",
2026-06-21T03:56:28.5670792Z         "unit",
2026-06-21T03:56:28.5670873Z         "int"
2026-06-21T03:56:28.5670954Z       ],
2026-06-21T03:56:28.5671034Z       "stages": {
2026-06-21T03:56:28.5671126Z         "doc": {
2026-06-21T03:56:28.5671235Z           "complete": false,
2026-06-21T03:56:28.5671339Z           "evidence": []
2026-06-21T03:56:28.5671426Z         },
2026-06-21T03:56:28.5671507Z         "impl": {
2026-06-21T03:56:28.5671597Z           "complete": true,
2026-06-21T03:56:28.5671678Z           "evidence": [
2026-06-21T03:56:28.5671760Z             {
2026-06-21T03:56:28.5671888Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T03:56:28.5671969Z               "line": 85
2026-06-21T03:56:28.5672046Z             },
2026-06-21T03:56:28.5672137Z             {
2026-06-21T03:56:28.5672241Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5672318Z               "line": 68
2026-06-21T03:56:28.5672395Z             },
2026-06-21T03:56:28.5672480Z             {
2026-06-21T03:56:28.5672579Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5672659Z               "line": 99
2026-06-21T03:56:28.5672741Z             },
2026-06-21T03:56:28.5672823Z             {
2026-06-21T03:56:28.5672927Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5673012Z               "line": 183
2026-06-21T03:56:28.5673094Z             },
2026-06-21T03:56:28.5673161Z             {
2026-06-21T03:56:28.5673270Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5673341Z               "line": 314
2026-06-21T03:56:28.5673423Z             }
2026-06-21T03:56:28.5673514Z           ]
2026-06-21T03:56:28.5673589Z         },
2026-06-21T03:56:28.5673670Z         "int": {
2026-06-21T03:56:28.5673766Z           "complete": true,
2026-06-21T03:56:28.5673852Z           "evidence": [
2026-06-21T03:56:28.5673932Z             {
2026-06-21T03:56:28.5674053Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.5674147Z               "line": 156
2026-06-21T03:56:28.5674224Z             },
2026-06-21T03:56:28.5674300Z             {
2026-06-21T03:56:28.5674410Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:56:28.5674499Z               "line": 145
2026-06-21T03:56:28.5674581Z             },
2026-06-21T03:56:28.5674659Z             {
2026-06-21T03:56:28.5674776Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5674857Z               "line": 707
2026-06-21T03:56:28.5674937Z             },
2026-06-21T03:56:28.5675019Z             {
2026-06-21T03:56:28.5675131Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5675231Z               "line": 1069
2026-06-21T03:56:28.5675308Z             }
2026-06-21T03:56:28.5675394Z           ]
2026-06-21T03:56:28.5675474Z         },
2026-06-21T03:56:28.5675560Z         "unit": {
2026-06-21T03:56:28.5675646Z           "complete": true,
2026-06-21T03:56:28.5675732Z           "evidence": [
2026-06-21T03:56:28.5675803Z             {
2026-06-21T03:56:28.5675918Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5675995Z               "line": 552
2026-06-21T03:56:28.5676080Z             },
2026-06-21T03:56:28.5676160Z             {
2026-06-21T03:56:28.5676262Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5676343Z               "line": 595
2026-06-21T03:56:28.5676423Z             },
2026-06-21T03:56:28.5676509Z             {
2026-06-21T03:56:28.5676624Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.5676709Z               "line": 219
2026-06-21T03:56:28.5676877Z             }
2026-06-21T03:56:28.5676958Z           ]
2026-06-21T03:56:28.5677042Z         }
2026-06-21T03:56:28.5677119Z       }
2026-06-21T03:56:28.5677273Z     },
2026-06-21T03:56:28.5677348Z     {
2026-06-21T03:56:28.5677434Z       "id": "REQ-INST-6",
2026-06-21T03:56:28.5677602Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T03:56:28.5677691Z       "requiredStages": [
2026-06-21T03:56:28.5677781Z         "impl",
2026-06-21T03:56:28.5677862Z         "unit",
2026-06-21T03:56:28.5677943Z         "int"
2026-06-21T03:56:28.5678022Z       ],
2026-06-21T03:56:28.5678103Z       "stages": {
2026-06-21T03:56:28.5678189Z         "doc": {
2026-06-21T03:56:28.5678270Z           "complete": true,
2026-06-21T03:56:28.5678351Z           "evidence": [
2026-06-21T03:56:28.5678432Z             {
2026-06-21T03:56:28.5678533Z               "path": "docs/DEFERRED.md",
2026-06-21T03:56:28.5678619Z               "line": 13
2026-06-21T03:56:28.5678689Z             }
2026-06-21T03:56:28.5678775Z           ]
2026-06-21T03:56:28.5678853Z         },
2026-06-21T03:56:28.5678938Z         "impl": {
2026-06-21T03:56:28.5679119Z           "complete": true,
2026-06-21T03:56:28.5679214Z           "evidence": [
2026-06-21T03:56:28.5679296Z             {
2026-06-21T03:56:28.5679414Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.5679487Z               "line": 391
2026-06-21T03:56:28.5679557Z             },
2026-06-21T03:56:28.5679638Z             {
2026-06-21T03:56:28.5679749Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:56:28.5679830Z               "line": 27
2026-06-21T03:56:28.5679914Z             },
2026-06-21T03:56:28.5679986Z             {
2026-06-21T03:56:28.5680145Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:56:28.5680229Z               "line": 73
2026-06-21T03:56:28.5680310Z             },
2026-06-21T03:56:28.5680409Z             {
2026-06-21T03:56:28.5680546Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T03:56:28.5680636Z               "line": 182
2026-06-21T03:56:28.5680717Z             },
2026-06-21T03:56:28.5680809Z             {
2026-06-21T03:56:28.5680918Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5681003Z               "line": 426
2026-06-21T03:56:28.5681086Z             },
2026-06-21T03:56:28.5681166Z             {
2026-06-21T03:56:28.5681280Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T03:56:28.5681361Z               "line": 31
2026-06-21T03:56:28.5681442Z             },
2026-06-21T03:56:28.5681514Z             {
2026-06-21T03:56:28.5681618Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.5681696Z               "line": 202
2026-06-21T03:56:28.5681781Z             },
2026-06-21T03:56:28.5681862Z             {
2026-06-21T03:56:28.5681966Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.5682049Z               "line": 83
2026-06-21T03:56:28.5682129Z             },
2026-06-21T03:56:28.5682214Z             {
2026-06-21T03:56:28.5682306Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5682401Z               "line": 1849
2026-06-21T03:56:28.5682486Z             },
2026-06-21T03:56:28.5682563Z             {
2026-06-21T03:56:28.5682664Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5682749Z               "line": 179
2026-06-21T03:56:28.5682834Z             },
2026-06-21T03:56:28.5682906Z             {
2026-06-21T03:56:28.5683013Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5683092Z               "line": 215
2026-06-21T03:56:28.5683168Z             }
2026-06-21T03:56:28.5683253Z           ]
2026-06-21T03:56:28.5683334Z         },
2026-06-21T03:56:28.5683425Z         "int": {
2026-06-21T03:56:28.5683506Z           "complete": true,
2026-06-21T03:56:28.5683596Z           "evidence": [
2026-06-21T03:56:28.5683678Z             {
2026-06-21T03:56:28.5683782Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5683969Z               "line": 721
2026-06-21T03:56:28.5684055Z             },
2026-06-21T03:56:28.5684231Z             {
2026-06-21T03:56:28.5684350Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5684431Z               "line": 1114
2026-06-21T03:56:28.5684516Z             },
2026-06-21T03:56:28.5684594Z             {
2026-06-21T03:56:28.5684698Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.5684779Z               "line": 726
2026-06-21T03:56:28.5684865Z             }
2026-06-21T03:56:28.5684947Z           ]
2026-06-21T03:56:28.5685027Z         },
2026-06-21T03:56:28.5685108Z         "unit": {
2026-06-21T03:56:28.5685199Z           "complete": true,
2026-06-21T03:56:28.5685280Z           "evidence": [
2026-06-21T03:56:28.5685360Z             {
2026-06-21T03:56:28.5685474Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.5685560Z               "line": 661
2026-06-21T03:56:28.5685635Z             },
2026-06-21T03:56:28.5685724Z             {
2026-06-21T03:56:28.5685834Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.5685921Z               "line": 899
2026-06-21T03:56:28.5686001Z             },
2026-06-21T03:56:28.5686086Z             {
2026-06-21T03:56:28.5686197Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T03:56:28.5686283Z               "line": 66
2026-06-21T03:56:28.5686368Z             },
2026-06-21T03:56:28.5686449Z             {
2026-06-21T03:56:28.5686555Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.5686636Z               "line": 297
2026-06-21T03:56:28.5686716Z             },
2026-06-21T03:56:28.5686803Z             {
2026-06-21T03:56:28.5686908Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.5686993Z               "line": 203
2026-06-21T03:56:28.5687069Z             }
2026-06-21T03:56:28.5687151Z           ]
2026-06-21T03:56:28.5687231Z         }
2026-06-21T03:56:28.5687312Z       }
2026-06-21T03:56:28.5687398Z     },
2026-06-21T03:56:28.5687480Z     {
2026-06-21T03:56:28.5687565Z       "id": "REQ-INST-7",
2026-06-21T03:56:28.5687703Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T03:56:28.5690261Z       "requiredStages": [
2026-06-21T03:56:28.5690371Z         "impl",
2026-06-21T03:56:28.5690456Z         "unit",
2026-06-21T03:56:28.5690537Z         "int"
2026-06-21T03:56:28.5690614Z       ],
2026-06-21T03:56:28.5690696Z       "stages": {
2026-06-21T03:56:28.5690780Z         "doc": {
2026-06-21T03:56:28.5690880Z           "complete": false,
2026-06-21T03:56:28.5690961Z           "evidence": []
2026-06-21T03:56:28.5691042Z         },
2026-06-21T03:56:28.5691120Z         "impl": {
2026-06-21T03:56:28.5691211Z           "complete": true,
2026-06-21T03:56:28.5691296Z           "evidence": [
2026-06-21T03:56:28.5691373Z             {
2026-06-21T03:56:28.5691506Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.5691587Z               "line": 436
2026-06-21T03:56:28.5691683Z             },
2026-06-21T03:56:28.5691755Z             {
2026-06-21T03:56:28.5691887Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5691975Z               "line": 27
2026-06-21T03:56:28.5692055Z             },
2026-06-21T03:56:28.5692135Z             {
2026-06-21T03:56:28.5692256Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5692341Z               "line": 207
2026-06-21T03:56:28.5692422Z             },
2026-06-21T03:56:28.5692503Z             {
2026-06-21T03:56:28.5692619Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5692693Z               "line": 344
2026-06-21T03:56:28.5692774Z             },
2026-06-21T03:56:28.5692851Z             {
2026-06-21T03:56:28.5692962Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T03:56:28.5693036Z               "line": 59
2026-06-21T03:56:28.5693113Z             },
2026-06-21T03:56:28.5693191Z             {
2026-06-21T03:56:28.5693438Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5693520Z               "line": 41
2026-06-21T03:56:28.5693694Z             },
2026-06-21T03:56:28.5693775Z             {
2026-06-21T03:56:28.5693890Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5693976Z               "line": 27
2026-06-21T03:56:28.5694051Z             },
2026-06-21T03:56:28.5694132Z             {
2026-06-21T03:56:28.5694248Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5694328Z               "line": 119
2026-06-21T03:56:28.5694409Z             },
2026-06-21T03:56:28.5694481Z             {
2026-06-21T03:56:28.5694596Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5694676Z               "line": 134
2026-06-21T03:56:28.5694752Z             },
2026-06-21T03:56:28.5694835Z             {
2026-06-21T03:56:28.5694939Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T03:56:28.5695024Z               "line": 139
2026-06-21T03:56:28.5695106Z             }
2026-06-21T03:56:28.5695183Z           ]
2026-06-21T03:56:28.5695263Z         },
2026-06-21T03:56:28.5695344Z         "int": {
2026-06-21T03:56:28.5695435Z           "complete": true,
2026-06-21T03:56:28.5695516Z           "evidence": [
2026-06-21T03:56:28.5695596Z             {
2026-06-21T03:56:28.5695721Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:56:28.5695803Z               "line": 145
2026-06-21T03:56:28.5695882Z             },
2026-06-21T03:56:28.5695958Z             {
2026-06-21T03:56:28.5696086Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5696167Z               "line": 665
2026-06-21T03:56:28.5696247Z             },
2026-06-21T03:56:28.5696327Z             {
2026-06-21T03:56:28.5696433Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5696514Z               "line": 964
2026-06-21T03:56:28.5696585Z             }
2026-06-21T03:56:28.5696665Z           ]
2026-06-21T03:56:28.5696748Z         },
2026-06-21T03:56:28.5696829Z         "unit": {
2026-06-21T03:56:28.5696933Z           "complete": true,
2026-06-21T03:56:28.5697014Z           "evidence": [
2026-06-21T03:56:28.5697101Z             {
2026-06-21T03:56:28.5697219Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5697304Z               "line": 1134
2026-06-21T03:56:28.5697387Z             },
2026-06-21T03:56:28.5697468Z             {
2026-06-21T03:56:28.5697581Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5697663Z               "line": 1521
2026-06-21T03:56:28.5697744Z             },
2026-06-21T03:56:28.5697825Z             {
2026-06-21T03:56:28.5697948Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T03:56:28.5698031Z               "line": 84
2026-06-21T03:56:28.5698111Z             },
2026-06-21T03:56:28.5698192Z             {
2026-06-21T03:56:28.5698307Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5698398Z               "line": 812
2026-06-21T03:56:28.5698478Z             },
2026-06-21T03:56:28.5698573Z             {
2026-06-21T03:56:28.5698694Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5698774Z               "line": 823
2026-06-21T03:56:28.5698858Z             },
2026-06-21T03:56:28.5698930Z             {
2026-06-21T03:56:28.5699123Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5699199Z               "line": 838
2026-06-21T03:56:28.5699281Z             },
2026-06-21T03:56:28.5699363Z             {
2026-06-21T03:56:28.5699481Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5699567Z               "line": 166
2026-06-21T03:56:28.5699634Z             },
2026-06-21T03:56:28.5699715Z             {
2026-06-21T03:56:28.5699819Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5699905Z               "line": 181
2026-06-21T03:56:28.5700092Z             },
2026-06-21T03:56:28.5700171Z             {
2026-06-21T03:56:28.5700287Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.5700477Z               "line": 214
2026-06-21T03:56:28.5700554Z             }
2026-06-21T03:56:28.5700631Z           ]
2026-06-21T03:56:28.5700715Z         }
2026-06-21T03:56:28.5700796Z       }
2026-06-21T03:56:28.5700879Z     },
2026-06-21T03:56:28.5700955Z     {
2026-06-21T03:56:28.5701044Z       "id": "REQ-INST-8",
2026-06-21T03:56:28.5701199Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T03:56:28.5701284Z       "requiredStages": [
2026-06-21T03:56:28.5701354Z         "impl",
2026-06-21T03:56:28.5701435Z         "unit",
2026-06-21T03:56:28.5701516Z         "int"
2026-06-21T03:56:28.5701587Z       ],
2026-06-21T03:56:28.5701667Z       "stages": {
2026-06-21T03:56:28.5701751Z         "doc": {
2026-06-21T03:56:28.5701833Z           "complete": false,
2026-06-21T03:56:28.5701920Z           "evidence": []
2026-06-21T03:56:28.5702010Z         },
2026-06-21T03:56:28.5702095Z         "impl": {
2026-06-21T03:56:28.5702181Z           "complete": true,
2026-06-21T03:56:28.5702262Z           "evidence": [
2026-06-21T03:56:28.5702348Z             {
2026-06-21T03:56:28.5702457Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5702544Z               "line": 104
2026-06-21T03:56:28.5702625Z             },
2026-06-21T03:56:28.5702705Z             {
2026-06-21T03:56:28.5702816Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5702897Z               "line": 330
2026-06-21T03:56:28.5702982Z             },
2026-06-21T03:56:28.5703058Z             {
2026-06-21T03:56:28.5703164Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.5703249Z               "line": 370
2026-06-21T03:56:28.5703330Z             },
2026-06-21T03:56:28.5703411Z             {
2026-06-21T03:56:28.5703517Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.5703611Z               "line": 62
2026-06-21T03:56:28.5703697Z             }
2026-06-21T03:56:28.5703779Z           ]
2026-06-21T03:56:28.5703865Z         },
2026-06-21T03:56:28.5703940Z         "int": {
2026-06-21T03:56:28.5704017Z           "complete": true,
2026-06-21T03:56:28.5704104Z           "evidence": [
2026-06-21T03:56:28.5704184Z             {
2026-06-21T03:56:28.5704297Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.5704388Z               "line": 415
2026-06-21T03:56:28.5704460Z             },
2026-06-21T03:56:28.5704541Z             {
2026-06-21T03:56:28.5704650Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.5704736Z               "line": 1028
2026-06-21T03:56:28.5704817Z             }
2026-06-21T03:56:28.5704893Z           ]
2026-06-21T03:56:28.5704974Z         },
2026-06-21T03:56:28.5705051Z         "unit": {
2026-06-21T03:56:28.5705136Z           "complete": true,
2026-06-21T03:56:28.5705213Z           "evidence": [
2026-06-21T03:56:28.5705298Z             {
2026-06-21T03:56:28.5705414Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5705508Z               "line": 366
2026-06-21T03:56:28.5705579Z             },
2026-06-21T03:56:28.5705656Z             {
2026-06-21T03:56:28.5705757Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5705837Z               "line": 633
2026-06-21T03:56:28.5705918Z             },
2026-06-21T03:56:28.5706000Z             {
2026-06-21T03:56:28.5706114Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.5706195Z               "line": 116
2026-06-21T03:56:28.5706281Z             },
2026-06-21T03:56:28.5706359Z             {
2026-06-21T03:56:28.5706466Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.5706551Z               "line": 160
2026-06-21T03:56:28.5706632Z             }
2026-06-21T03:56:28.5706704Z           ]
2026-06-21T03:56:28.5706783Z         }
2026-06-21T03:56:28.5706940Z       }
2026-06-21T03:56:28.5707017Z     },
2026-06-21T03:56:28.5707098Z     {
2026-06-21T03:56:28.5707178Z       "id": "REQ-INST-9",
2026-06-21T03:56:28.5707422Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T03:56:28.5707512Z       "requiredStages": [
2026-06-21T03:56:28.5707593Z         "impl",
2026-06-21T03:56:28.5707675Z         "unit"
2026-06-21T03:56:28.5707756Z       ],
2026-06-21T03:56:28.5707832Z       "stages": {
2026-06-21T03:56:28.5707908Z         "doc": {
2026-06-21T03:56:28.5707994Z           "complete": false,
2026-06-21T03:56:28.5708071Z           "evidence": []
2026-06-21T03:56:28.5708151Z         },
2026-06-21T03:56:28.5708233Z         "impl": {
2026-06-21T03:56:28.5708309Z           "complete": true,
2026-06-21T03:56:28.5708390Z           "evidence": [
2026-06-21T03:56:28.5708471Z             {
2026-06-21T03:56:28.5708591Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5708666Z               "line": 449
2026-06-21T03:56:28.5708747Z             }
2026-06-21T03:56:28.5708828Z           ]
2026-06-21T03:56:28.5708906Z         },
2026-06-21T03:56:28.5709066Z         "int": {
2026-06-21T03:56:28.5709143Z           "complete": false,
2026-06-21T03:56:28.5709231Z           "evidence": []
2026-06-21T03:56:28.5709306Z         },
2026-06-21T03:56:28.5709390Z         "unit": {
2026-06-21T03:56:28.5709475Z           "complete": true,
2026-06-21T03:56:28.5709562Z           "evidence": [
2026-06-21T03:56:28.5709641Z             {
2026-06-21T03:56:28.5709754Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5709841Z               "line": 1397
2026-06-21T03:56:28.5709918Z             },
2026-06-21T03:56:28.5709998Z             {
2026-06-21T03:56:28.5710102Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5710185Z               "line": 1406
2026-06-21T03:56:28.5710266Z             },
2026-06-21T03:56:28.5710337Z             {
2026-06-21T03:56:28.5710456Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5710533Z               "line": 1422
2026-06-21T03:56:28.5710613Z             },
2026-06-21T03:56:28.5710689Z             {
2026-06-21T03:56:28.5710785Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5710871Z               "line": 1434
2026-06-21T03:56:28.5710951Z             },
2026-06-21T03:56:28.5711028Z             {
2026-06-21T03:56:28.5711134Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5711219Z               "line": 1454
2026-06-21T03:56:28.5711294Z             }
2026-06-21T03:56:28.5711366Z           ]
2026-06-21T03:56:28.5711449Z         }
2026-06-21T03:56:28.5711520Z       }
2026-06-21T03:56:28.5711590Z     },
2026-06-21T03:56:28.5711676Z     {
2026-06-21T03:56:28.5711768Z       "id": "REQ-INSTALL-1",
2026-06-21T03:56:28.5711943Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T03:56:28.5712033Z       "requiredStages": [
2026-06-21T03:56:28.5712152Z         "doc",
2026-06-21T03:56:28.5712236Z         "impl",
2026-06-21T03:56:28.5712316Z         "int"
2026-06-21T03:56:28.5712398Z       ],
2026-06-21T03:56:28.5712480Z       "stages": {
2026-06-21T03:56:28.5712561Z         "doc": {
2026-06-21T03:56:28.5712645Z           "complete": true,
2026-06-21T03:56:28.5712732Z           "evidence": [
2026-06-21T03:56:28.5712809Z             {
2026-06-21T03:56:28.5712904Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5712984Z               "line": 754
2026-06-21T03:56:28.5713061Z             }
2026-06-21T03:56:28.5713142Z           ]
2026-06-21T03:56:28.5713223Z         },
2026-06-21T03:56:28.5713298Z         "impl": {
2026-06-21T03:56:28.5713376Z           "complete": true,
2026-06-21T03:56:28.5713467Z           "evidence": [
2026-06-21T03:56:28.5713548Z             {
2026-06-21T03:56:28.5713647Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5713729Z               "line": 57
2026-06-21T03:56:28.5713914Z             },
2026-06-21T03:56:28.5713996Z             {
2026-06-21T03:56:28.5714096Z               "path": "installer/install.sh",
2026-06-21T03:56:28.5714272Z               "line": 52
2026-06-21T03:56:28.5714359Z             }
2026-06-21T03:56:28.5714434Z           ]
2026-06-21T03:56:28.5714515Z         },
2026-06-21T03:56:28.5714582Z         "int": {
2026-06-21T03:56:28.5714673Z           "complete": true,
2026-06-21T03:56:28.5714754Z           "evidence": [
2026-06-21T03:56:28.5714838Z             {
2026-06-21T03:56:28.5714957Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:56:28.5715039Z               "line": 21
2026-06-21T03:56:28.5715111Z             }
2026-06-21T03:56:28.5715191Z           ]
2026-06-21T03:56:28.5715272Z         },
2026-06-21T03:56:28.5715354Z         "unit": {
2026-06-21T03:56:28.5715440Z           "complete": false,
2026-06-21T03:56:28.5715524Z           "evidence": []
2026-06-21T03:56:28.5715602Z         }
2026-06-21T03:56:28.5715678Z       }
2026-06-21T03:56:28.5715764Z     },
2026-06-21T03:56:28.5715844Z     {
2026-06-21T03:56:28.5715926Z       "id": "REQ-INSTALL-10",
2026-06-21T03:56:28.5717311Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T03:56:28.5717410Z       "requiredStages": [
2026-06-21T03:56:28.5717490Z         "impl",
2026-06-21T03:56:28.5717572Z         "unit"
2026-06-21T03:56:28.5717649Z       ],
2026-06-21T03:56:28.5717734Z       "stages": {
2026-06-21T03:56:28.5717810Z         "doc": {
2026-06-21T03:56:28.5717901Z           "complete": false,
2026-06-21T03:56:28.5717983Z           "evidence": []
2026-06-21T03:56:28.5718063Z         },
2026-06-21T03:56:28.5718154Z         "impl": {
2026-06-21T03:56:28.5718240Z           "complete": true,
2026-06-21T03:56:28.5718325Z           "evidence": [
2026-06-21T03:56:28.5718416Z             {
2026-06-21T03:56:28.5718522Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5718607Z               "line": 191
2026-06-21T03:56:28.5718687Z             }
2026-06-21T03:56:28.5718768Z           ]
2026-06-21T03:56:28.5718846Z         },
2026-06-21T03:56:28.5718921Z         "int": {
2026-06-21T03:56:28.5719088Z           "complete": false,
2026-06-21T03:56:28.5719175Z           "evidence": []
2026-06-21T03:56:28.5719264Z         },
2026-06-21T03:56:28.5719336Z         "unit": {
2026-06-21T03:56:28.5719423Z           "complete": true,
2026-06-21T03:56:28.5719504Z           "evidence": [
2026-06-21T03:56:28.5719588Z             {
2026-06-21T03:56:28.5719708Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:56:28.5719786Z               "line": 211
2026-06-21T03:56:28.5719861Z             }
2026-06-21T03:56:28.5719932Z           ]
2026-06-21T03:56:28.5720011Z         }
2026-06-21T03:56:28.5720093Z       }
2026-06-21T03:56:28.5720169Z     },
2026-06-21T03:56:28.5720248Z     {
2026-06-21T03:56:28.5720329Z       "id": "REQ-INSTALL-11",
2026-06-21T03:56:28.5722075Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T03:56:28.5722170Z       "requiredStages": [
2026-06-21T03:56:28.5722241Z         "doc",
2026-06-21T03:56:28.5722338Z         "impl",
2026-06-21T03:56:28.5722512Z         "unit"
2026-06-21T03:56:28.5722593Z       ],
2026-06-21T03:56:28.5722670Z       "stages": {
2026-06-21T03:56:28.5722853Z         "doc": {
2026-06-21T03:56:28.5722943Z           "complete": true,
2026-06-21T03:56:28.5723020Z           "evidence": [
2026-06-21T03:56:28.5723107Z             {
2026-06-21T03:56:28.5723196Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5723292Z               "line": 138
2026-06-21T03:56:28.5723383Z             },
2026-06-21T03:56:28.5723482Z             {
2026-06-21T03:56:28.5723622Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.5723726Z               "line": 82
2026-06-21T03:56:28.5723811Z             }
2026-06-21T03:56:28.5723888Z           ]
2026-06-21T03:56:28.5723969Z         },
2026-06-21T03:56:28.5724055Z         "impl": {
2026-06-21T03:56:28.5724145Z           "complete": true,
2026-06-21T03:56:28.5724241Z           "evidence": [
2026-06-21T03:56:28.5724322Z             {
2026-06-21T03:56:28.5724451Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.5724532Z               "line": 223
2026-06-21T03:56:28.5724623Z             },
2026-06-21T03:56:28.5724708Z             {
2026-06-21T03:56:28.5724827Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5724909Z               "line": 99
2026-06-21T03:56:28.5724990Z             },
2026-06-21T03:56:28.5725075Z             {
2026-06-21T03:56:28.5725191Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.5725277Z               "line": 117
2026-06-21T03:56:28.5725356Z             },
2026-06-21T03:56:28.5725441Z             {
2026-06-21T03:56:28.5725551Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T03:56:28.5725633Z               "line": 332
2026-06-21T03:56:28.5725722Z             },
2026-06-21T03:56:28.5725803Z             {
2026-06-21T03:56:28.5725919Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.5726000Z               "line": 88
2026-06-21T03:56:28.5726089Z             },
2026-06-21T03:56:28.5726162Z             {
2026-06-21T03:56:28.5726271Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.5726357Z               "line": 104
2026-06-21T03:56:28.5726438Z             },
2026-06-21T03:56:28.5726510Z             {
2026-06-21T03:56:28.5726623Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5726714Z               "line": 297
2026-06-21T03:56:28.5726796Z             },
2026-06-21T03:56:28.5726877Z             {
2026-06-21T03:56:28.5726996Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5727082Z               "line": 332
2026-06-21T03:56:28.5727164Z             },
2026-06-21T03:56:28.5727239Z             {
2026-06-21T03:56:28.5727358Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5727450Z               "line": 523
2026-06-21T03:56:28.5727526Z             },
2026-06-21T03:56:28.5727610Z             {
2026-06-21T03:56:28.5727728Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5727815Z               "line": 546
2026-06-21T03:56:28.5727904Z             },
2026-06-21T03:56:28.5727984Z             {
2026-06-21T03:56:28.5728103Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5728180Z               "line": 561
2026-06-21T03:56:28.5728270Z             },
2026-06-21T03:56:28.5728351Z             {
2026-06-21T03:56:28.5728452Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.5728533Z               "line": 492
2026-06-21T03:56:28.5728613Z             }
2026-06-21T03:56:28.5728699Z           ]
2026-06-21T03:56:28.5728777Z         },
2026-06-21T03:56:28.5728862Z         "int": {
2026-06-21T03:56:28.5728999Z           "complete": false,
2026-06-21T03:56:28.5729096Z           "evidence": []
2026-06-21T03:56:28.5729181Z         },
2026-06-21T03:56:28.5729252Z         "unit": {
2026-06-21T03:56:28.5729348Z           "complete": true,
2026-06-21T03:56:28.5729548Z           "evidence": [
2026-06-21T03:56:28.5729629Z             {
2026-06-21T03:56:28.5729740Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5729920Z               "line": 799
2026-06-21T03:56:28.5729997Z             },
2026-06-21T03:56:28.5730064Z             {
2026-06-21T03:56:28.5730182Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5730264Z               "line": 811
2026-06-21T03:56:28.5730341Z             },
2026-06-21T03:56:28.5730421Z             {
2026-06-21T03:56:28.5730534Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.5730620Z               "line": 820
2026-06-21T03:56:28.5730701Z             }
2026-06-21T03:56:28.5730780Z           ]
2026-06-21T03:56:28.5730856Z         }
2026-06-21T03:56:28.5730937Z       }
2026-06-21T03:56:28.5731019Z     },
2026-06-21T03:56:28.5731109Z     {
2026-06-21T03:56:28.5731204Z       "id": "REQ-INSTALL-12",
2026-06-21T03:56:28.5733775Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T03:56:28.5733895Z       "requiredStages": [
2026-06-21T03:56:28.5733971Z         "doc",
2026-06-21T03:56:28.5734052Z         "impl",
2026-06-21T03:56:28.5734147Z         "unit",
2026-06-21T03:56:28.5734224Z         "int"
2026-06-21T03:56:28.5734300Z       ],
2026-06-21T03:56:28.5734395Z       "stages": {
2026-06-21T03:56:28.5734472Z         "doc": {
2026-06-21T03:56:28.5734563Z           "complete": true,
2026-06-21T03:56:28.5734643Z           "evidence": [
2026-06-21T03:56:28.5734724Z             {
2026-06-21T03:56:28.5734811Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5734901Z               "line": 185
2026-06-21T03:56:28.5734982Z             }
2026-06-21T03:56:28.5735063Z           ]
2026-06-21T03:56:28.5735141Z         },
2026-06-21T03:56:28.5735225Z         "impl": {
2026-06-21T03:56:28.5735306Z           "complete": true,
2026-06-21T03:56:28.5735392Z           "evidence": [
2026-06-21T03:56:28.5735474Z             {
2026-06-21T03:56:28.5735587Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5735678Z               "line": 27
2026-06-21T03:56:28.5735765Z             },
2026-06-21T03:56:28.5735841Z             {
2026-06-21T03:56:28.5735959Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5736053Z               "line": 223
2026-06-21T03:56:28.5736140Z             },
2026-06-21T03:56:28.5736222Z             {
2026-06-21T03:56:28.5736325Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5736417Z               "line": 5677
2026-06-21T03:56:28.5736498Z             }
2026-06-21T03:56:28.5736583Z           ]
2026-06-21T03:56:28.5736654Z         },
2026-06-21T03:56:28.5736741Z         "int": {
2026-06-21T03:56:28.5736832Z           "complete": true,
2026-06-21T03:56:28.5736912Z           "evidence": [
2026-06-21T03:56:28.5736998Z             {
2026-06-21T03:56:28.5737118Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:56:28.5737203Z               "line": 19
2026-06-21T03:56:28.5737283Z             }
2026-06-21T03:56:28.5737366Z           ]
2026-06-21T03:56:28.5737452Z         },
2026-06-21T03:56:28.5737532Z         "unit": {
2026-06-21T03:56:28.5737709Z           "complete": true,
2026-06-21T03:56:28.5737795Z           "evidence": [
2026-06-21T03:56:28.5737947Z             {
2026-06-21T03:56:28.5738058Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5738137Z               "line": 395
2026-06-21T03:56:28.5738222Z             },
2026-06-21T03:56:28.5738293Z             {
2026-06-21T03:56:28.5738399Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5738478Z               "line": 421
2026-06-21T03:56:28.5738563Z             },
2026-06-21T03:56:28.5738645Z             {
2026-06-21T03:56:28.5738755Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5738840Z               "line": 440
2026-06-21T03:56:28.5738921Z             },
2026-06-21T03:56:28.5739069Z             {
2026-06-21T03:56:28.5739187Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5739279Z               "line": 475
2026-06-21T03:56:28.5739356Z             },
2026-06-21T03:56:28.5739451Z             {
2026-06-21T03:56:28.5739555Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5739632Z               "line": 8665
2026-06-21T03:56:28.5739717Z             }
2026-06-21T03:56:28.5739798Z           ]
2026-06-21T03:56:28.5739879Z         }
2026-06-21T03:56:28.5739966Z       }
2026-06-21T03:56:28.5740037Z     },
2026-06-21T03:56:28.5740118Z     {
2026-06-21T03:56:28.5740204Z       "id": "REQ-INSTALL-2",
2026-06-21T03:56:28.5740333Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T03:56:28.5740418Z       "requiredStages": [
2026-06-21T03:56:28.5740499Z         "doc"
2026-06-21T03:56:28.5740576Z       ],
2026-06-21T03:56:28.5740667Z       "stages": {
2026-06-21T03:56:28.5740742Z         "doc": {
2026-06-21T03:56:28.5740824Z           "complete": true,
2026-06-21T03:56:28.5740911Z           "evidence": [
2026-06-21T03:56:28.5740986Z             {
2026-06-21T03:56:28.5741080Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5741170Z               "line": 755
2026-06-21T03:56:28.5741252Z             }
2026-06-21T03:56:28.5741331Z           ]
2026-06-21T03:56:28.5741421Z         },
2026-06-21T03:56:28.5741507Z         "impl": {
2026-06-21T03:56:28.5741588Z           "complete": false,
2026-06-21T03:56:28.5741683Z           "evidence": []
2026-06-21T03:56:28.5741759Z         },
2026-06-21T03:56:28.5741846Z         "int": {
2026-06-21T03:56:28.5741936Z           "complete": false,
2026-06-21T03:56:28.5742017Z           "evidence": []
2026-06-21T03:56:28.5742093Z         },
2026-06-21T03:56:28.5742175Z         "unit": {
2026-06-21T03:56:28.5742265Z           "complete": false,
2026-06-21T03:56:28.5742346Z           "evidence": []
2026-06-21T03:56:28.5742427Z         }
2026-06-21T03:56:28.5742509Z       }
2026-06-21T03:56:28.5742584Z     },
2026-06-21T03:56:28.5742665Z     {
2026-06-21T03:56:28.5742760Z       "id": "REQ-INSTALL-3",
2026-06-21T03:56:28.5742885Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T03:56:28.5742985Z       "requiredStages": [
2026-06-21T03:56:28.5743066Z         "impl",
2026-06-21T03:56:28.5743148Z         "int"
2026-06-21T03:56:28.5743228Z       ],
2026-06-21T03:56:28.5743314Z       "stages": {
2026-06-21T03:56:28.5743395Z         "doc": {
2026-06-21T03:56:28.5743482Z           "complete": false,
2026-06-21T03:56:28.5743562Z           "evidence": []
2026-06-21T03:56:28.5743637Z         },
2026-06-21T03:56:28.5743718Z         "impl": {
2026-06-21T03:56:28.5743804Z           "complete": true,
2026-06-21T03:56:28.5743893Z           "evidence": [
2026-06-21T03:56:28.5743974Z             {
2026-06-21T03:56:28.5744078Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5744165Z               "line": 100
2026-06-21T03:56:28.5744245Z             },
2026-06-21T03:56:28.5744326Z             {
2026-06-21T03:56:28.5744427Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5744513Z               "line": 111
2026-06-21T03:56:28.5744593Z             },
2026-06-21T03:56:28.5744780Z             {
2026-06-21T03:56:28.5744870Z               "path": "installer/install.sh",
2026-06-21T03:56:28.5744960Z               "line": 79
2026-06-21T03:56:28.5745142Z             }
2026-06-21T03:56:28.5745218Z           ]
2026-06-21T03:56:28.5745303Z         },
2026-06-21T03:56:28.5745381Z         "int": {
2026-06-21T03:56:28.5745466Z           "complete": true,
2026-06-21T03:56:28.5745547Z           "evidence": [
2026-06-21T03:56:28.5745632Z             {
2026-06-21T03:56:28.5745748Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:56:28.5745833Z               "line": 167
2026-06-21T03:56:28.5745909Z             }
2026-06-21T03:56:28.5745986Z           ]
2026-06-21T03:56:28.5746068Z         },
2026-06-21T03:56:28.5746138Z         "unit": {
2026-06-21T03:56:28.5746229Z           "complete": false,
2026-06-21T03:56:28.5746311Z           "evidence": []
2026-06-21T03:56:28.5746392Z         }
2026-06-21T03:56:28.5746476Z       }
2026-06-21T03:56:28.5746552Z     },
2026-06-21T03:56:28.5746647Z     {
2026-06-21T03:56:28.5746734Z       "id": "REQ-INSTALL-4",
2026-06-21T03:56:28.5747344Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T03:56:28.5747449Z       "requiredStages": [
2026-06-21T03:56:28.5747524Z         "impl",
2026-06-21T03:56:28.5747606Z         "unit"
2026-06-21T03:56:28.5747682Z       ],
2026-06-21T03:56:28.5747763Z       "stages": {
2026-06-21T03:56:28.5747844Z         "doc": {
2026-06-21T03:56:28.5747936Z           "complete": false,
2026-06-21T03:56:28.5748026Z           "evidence": []
2026-06-21T03:56:28.5748102Z         },
2026-06-21T03:56:28.5748192Z         "impl": {
2026-06-21T03:56:28.5748265Z           "complete": true,
2026-06-21T03:56:28.5748355Z           "evidence": [
2026-06-21T03:56:28.5748425Z             {
2026-06-21T03:56:28.5748560Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.5748646Z               "line": 165
2026-06-21T03:56:28.5748740Z             },
2026-06-21T03:56:28.5748821Z             {
2026-06-21T03:56:28.5749020Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5749104Z               "line": 29
2026-06-21T03:56:28.5749185Z             },
2026-06-21T03:56:28.5749267Z             {
2026-06-21T03:56:28.5749381Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5749462Z               "line": 288
2026-06-21T03:56:28.5749544Z             },
2026-06-21T03:56:28.5749620Z             {
2026-06-21T03:56:28.5749738Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5749824Z               "line": 356
2026-06-21T03:56:28.5749911Z             },
2026-06-21T03:56:28.5749997Z             {
2026-06-21T03:56:28.5750096Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5750178Z               "line": 386
2026-06-21T03:56:28.5750259Z             },
2026-06-21T03:56:28.5750340Z             {
2026-06-21T03:56:28.5750454Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5750540Z               "line": 434
2026-06-21T03:56:28.5750620Z             },
2026-06-21T03:56:28.5750702Z             {
2026-06-21T03:56:28.5750803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5750889Z               "line": 5396
2026-06-21T03:56:28.5750968Z             }
2026-06-21T03:56:28.5751045Z           ]
2026-06-21T03:56:28.5751118Z         },
2026-06-21T03:56:28.5751204Z         "int": {
2026-06-21T03:56:28.5751292Z           "complete": false,
2026-06-21T03:56:28.5751384Z           "evidence": []
2026-06-21T03:56:28.5751456Z         },
2026-06-21T03:56:28.5751542Z         "unit": {
2026-06-21T03:56:28.5751626Z           "complete": true,
2026-06-21T03:56:28.5751716Z           "evidence": [
2026-06-21T03:56:28.5751802Z             {
2026-06-21T03:56:28.5751929Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.5752119Z               "line": 375
2026-06-21T03:56:28.5752281Z             },
2026-06-21T03:56:28.5752357Z             {
2026-06-21T03:56:28.5752478Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5752568Z               "line": 808
2026-06-21T03:56:28.5752648Z             },
2026-06-21T03:56:28.5752730Z             {
2026-06-21T03:56:28.5752844Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5752929Z               "line": 849
2026-06-21T03:56:28.5753016Z             },
2026-06-21T03:56:28.5753098Z             {
2026-06-21T03:56:28.5753207Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5753297Z               "line": 869
2026-06-21T03:56:28.5753379Z             },
2026-06-21T03:56:28.5753464Z             {
2026-06-21T03:56:28.5753559Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5753645Z               "line": 8403
2026-06-21T03:56:28.5753732Z             }
2026-06-21T03:56:28.5753816Z           ]
2026-06-21T03:56:28.5753898Z         }
2026-06-21T03:56:28.5753980Z       }
2026-06-21T03:56:28.5754062Z     },
2026-06-21T03:56:28.5754141Z     {
2026-06-21T03:56:28.5754236Z       "id": "REQ-INSTALL-5",
2026-06-21T03:56:28.5754701Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T03:56:28.5754782Z       "requiredStages": [
2026-06-21T03:56:28.5754867Z         "impl",
2026-06-21T03:56:28.5754948Z         "int"
2026-06-21T03:56:28.5755025Z       ],
2026-06-21T03:56:28.5755116Z       "stages": {
2026-06-21T03:56:28.5755196Z         "doc": {
2026-06-21T03:56:28.5757680Z           "complete": false,
2026-06-21T03:56:28.5757788Z           "evidence": []
2026-06-21T03:56:28.5757862Z         },
2026-06-21T03:56:28.5757937Z         "impl": {
2026-06-21T03:56:28.5758018Z           "complete": true,
2026-06-21T03:56:28.5758123Z           "evidence": [
2026-06-21T03:56:28.5758205Z             {
2026-06-21T03:56:28.5758328Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5758409Z               "line": 5
2026-06-21T03:56:28.5758486Z             },
2026-06-21T03:56:28.5758567Z             {
2026-06-21T03:56:28.5758672Z               "path": "installer/install.sh",
2026-06-21T03:56:28.5758752Z               "line": 6
2026-06-21T03:56:28.5758835Z             }
2026-06-21T03:56:28.5758915Z           ]
2026-06-21T03:56:28.5759077Z         },
2026-06-21T03:56:28.5759155Z         "int": {
2026-06-21T03:56:28.5759248Z           "complete": true,
2026-06-21T03:56:28.5759333Z           "evidence": [
2026-06-21T03:56:28.5759414Z             {
2026-06-21T03:56:28.5759542Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T03:56:28.5759622Z               "line": 22
2026-06-21T03:56:28.5759702Z             }
2026-06-21T03:56:28.5759784Z           ]
2026-06-21T03:56:28.5759865Z         },
2026-06-21T03:56:28.5759956Z         "unit": {
2026-06-21T03:56:28.5760036Z           "complete": false,
2026-06-21T03:56:28.5760123Z           "evidence": []
2026-06-21T03:56:28.5760199Z         }
2026-06-21T03:56:28.5760275Z       }
2026-06-21T03:56:28.5760355Z     },
2026-06-21T03:56:28.5760433Z     {
2026-06-21T03:56:28.5760523Z       "id": "REQ-INSTALL-6",
2026-06-21T03:56:28.5761721Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T03:56:28.5761815Z       "requiredStages": [
2026-06-21T03:56:28.5761897Z         "impl",
2026-06-21T03:56:28.5761978Z         "unit"
2026-06-21T03:56:28.5762050Z       ],
2026-06-21T03:56:28.5762130Z       "stages": {
2026-06-21T03:56:28.5762367Z         "doc": {
2026-06-21T03:56:28.5762447Z           "complete": false,
2026-06-21T03:56:28.5762632Z           "evidence": []
2026-06-21T03:56:28.5762709Z         },
2026-06-21T03:56:28.5762790Z         "impl": {
2026-06-21T03:56:28.5762874Z           "complete": true,
2026-06-21T03:56:28.5762961Z           "evidence": [
2026-06-21T03:56:28.5763038Z             {
2026-06-21T03:56:28.5763161Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5763242Z               "line": 61
2026-06-21T03:56:28.5763324Z             },
2026-06-21T03:56:28.5763404Z             {
2026-06-21T03:56:28.5763523Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.5763600Z               "line": 641
2026-06-21T03:56:28.5763687Z             },
2026-06-21T03:56:28.5763767Z             {
2026-06-21T03:56:28.5763886Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5763973Z               "line": 191
2026-06-21T03:56:28.5764062Z             },
2026-06-21T03:56:28.5764129Z             {
2026-06-21T03:56:28.5764240Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5764326Z               "line": 276
2026-06-21T03:56:28.5764405Z             },
2026-06-21T03:56:28.5764487Z             {
2026-06-21T03:56:28.5764588Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:56:28.5764669Z               "line": 43
2026-06-21T03:56:28.5764743Z             },
2026-06-21T03:56:28.5764824Z             {
2026-06-21T03:56:28.5764915Z               "path": "installer/install.sh",
2026-06-21T03:56:28.5765000Z               "line": 104
2026-06-21T03:56:28.5765079Z             }
2026-06-21T03:56:28.5765164Z           ]
2026-06-21T03:56:28.5765242Z         },
2026-06-21T03:56:28.5765329Z         "int": {
2026-06-21T03:56:28.5765408Z           "complete": false,
2026-06-21T03:56:28.5765484Z           "evidence": []
2026-06-21T03:56:28.5765562Z         },
2026-06-21T03:56:28.5765642Z         "unit": {
2026-06-21T03:56:28.5765737Z           "complete": true,
2026-06-21T03:56:28.5765823Z           "evidence": [
2026-06-21T03:56:28.5765910Z             {
2026-06-21T03:56:28.5766019Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T03:56:28.5766104Z               "line": 894
2026-06-21T03:56:28.5766177Z             }
2026-06-21T03:56:28.5766257Z           ]
2026-06-21T03:56:28.5766338Z         }
2026-06-21T03:56:28.5766419Z       }
2026-06-21T03:56:28.5766501Z     },
2026-06-21T03:56:28.5766577Z     {
2026-06-21T03:56:28.5766667Z       "id": "REQ-INSTALL-7",
2026-06-21T03:56:28.5767749Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T03:56:28.5767835Z       "requiredStages": [
2026-06-21T03:56:28.5767911Z         "impl"
2026-06-21T03:56:28.5767992Z       ],
2026-06-21T03:56:28.5768082Z       "stages": {
2026-06-21T03:56:28.5768164Z         "doc": {
2026-06-21T03:56:28.5768245Z           "complete": false,
2026-06-21T03:56:28.5768325Z           "evidence": []
2026-06-21T03:56:28.5768402Z         },
2026-06-21T03:56:28.5768488Z         "impl": {
2026-06-21T03:56:28.5768574Z           "complete": true,
2026-06-21T03:56:28.5768659Z           "evidence": [
2026-06-21T03:56:28.5768741Z             {
2026-06-21T03:56:28.5768836Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5768921Z               "line": 3920
2026-06-21T03:56:28.5769080Z             },
2026-06-21T03:56:28.5769165Z             {
2026-06-21T03:56:28.5769265Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5769366Z               "line": 157
2026-06-21T03:56:28.5769446Z             }
2026-06-21T03:56:28.5769517Z           ]
2026-06-21T03:56:28.5769599Z         },
2026-06-21T03:56:28.5769780Z         "int": {
2026-06-21T03:56:28.5769865Z           "complete": false,
2026-06-21T03:56:28.5770027Z           "evidence": []
2026-06-21T03:56:28.5770107Z         },
2026-06-21T03:56:28.5770182Z         "unit": {
2026-06-21T03:56:28.5770267Z           "complete": false,
2026-06-21T03:56:28.5770349Z           "evidence": []
2026-06-21T03:56:28.5770426Z         }
2026-06-21T03:56:28.5770506Z       }
2026-06-21T03:56:28.5770586Z     },
2026-06-21T03:56:28.5770673Z     {
2026-06-21T03:56:28.5770764Z       "id": "REQ-INSTALL-8",
2026-06-21T03:56:28.5771770Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T03:56:28.5771874Z       "requiredStages": [
2026-06-21T03:56:28.5771952Z         "impl"
2026-06-21T03:56:28.5772037Z       ],
2026-06-21T03:56:28.5772118Z       "stages": {
2026-06-21T03:56:28.5772194Z         "doc": {
2026-06-21T03:56:28.5772276Z           "complete": false,
2026-06-21T03:56:28.5772361Z           "evidence": []
2026-06-21T03:56:28.5772437Z         },
2026-06-21T03:56:28.5772514Z         "impl": {
2026-06-21T03:56:28.5772605Z           "complete": true,
2026-06-21T03:56:28.5772690Z           "evidence": [
2026-06-21T03:56:28.5772765Z             {
2026-06-21T03:56:28.5772870Z               "path": "installer/install.ps1",
2026-06-21T03:56:28.5772951Z               "line": 184
2026-06-21T03:56:28.5773035Z             },
2026-06-21T03:56:28.5773110Z             {
2026-06-21T03:56:28.5773211Z               "path": "installer/install.sh",
2026-06-21T03:56:28.5773293Z               "line": 121
2026-06-21T03:56:28.5773373Z             }
2026-06-21T03:56:28.5773454Z           ]
2026-06-21T03:56:28.5773536Z         },
2026-06-21T03:56:28.5773617Z         "int": {
2026-06-21T03:56:28.5773707Z           "complete": false,
2026-06-21T03:56:28.5773802Z           "evidence": []
2026-06-21T03:56:28.5773884Z         },
2026-06-21T03:56:28.5773960Z         "unit": {
2026-06-21T03:56:28.5774041Z           "complete": false,
2026-06-21T03:56:28.5774127Z           "evidence": []
2026-06-21T03:56:28.5774213Z         }
2026-06-21T03:56:28.5774289Z       }
2026-06-21T03:56:28.5774360Z     },
2026-06-21T03:56:28.5774446Z     {
2026-06-21T03:56:28.5774523Z       "id": "REQ-INSTALL-9",
2026-06-21T03:56:28.5775720Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T03:56:28.5775821Z       "requiredStages": [
2026-06-21T03:56:28.5775908Z         "doc",
2026-06-21T03:56:28.5776001Z         "impl",
2026-06-21T03:56:28.5776083Z         "unit"
2026-06-21T03:56:28.5776165Z       ],
2026-06-21T03:56:28.5776246Z       "stages": {
2026-06-21T03:56:28.5776330Z         "doc": {
2026-06-21T03:56:28.5776417Z           "complete": true,
2026-06-21T03:56:28.5776503Z           "evidence": [
2026-06-21T03:56:28.5776584Z             {
2026-06-21T03:56:28.5776679Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5776770Z               "line": 771
2026-06-21T03:56:28.5776836Z             }
2026-06-21T03:56:28.5776927Z           ]
2026-06-21T03:56:28.5777003Z         },
2026-06-21T03:56:28.5777095Z         "impl": {
2026-06-21T03:56:28.5777184Z           "complete": true,
2026-06-21T03:56:28.5777270Z           "evidence": [
2026-06-21T03:56:28.5777352Z             {
2026-06-21T03:56:28.5777457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5777618Z               "line": 2535
2026-06-21T03:56:28.5777691Z             },
2026-06-21T03:56:28.5777772Z             {
2026-06-21T03:56:28.5777933Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5778015Z               "line": 2559
2026-06-21T03:56:28.5778096Z             }
2026-06-21T03:56:28.5778175Z           ]
2026-06-21T03:56:28.5778256Z         },
2026-06-21T03:56:28.5778337Z         "int": {
2026-06-21T03:56:28.5778429Z           "complete": false,
2026-06-21T03:56:28.5778514Z           "evidence": []
2026-06-21T03:56:28.5778594Z         },
2026-06-21T03:56:28.5778676Z         "unit": {
2026-06-21T03:56:28.5778757Z           "complete": true,
2026-06-21T03:56:28.5778847Z           "evidence": [
2026-06-21T03:56:28.5778923Z             {
2026-06-21T03:56:28.5779096Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5779181Z               "line": 7591
2026-06-21T03:56:28.5779263Z             },
2026-06-21T03:56:28.5779344Z             {
2026-06-21T03:56:28.5779439Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5779529Z               "line": 8433
2026-06-21T03:56:28.5779606Z             }
2026-06-21T03:56:28.5779697Z           ]
2026-06-21T03:56:28.5779778Z         }
2026-06-21T03:56:28.5779858Z       }
2026-06-21T03:56:28.5779941Z     },
2026-06-21T03:56:28.5780016Z     {
2026-06-21T03:56:28.5780106Z       "id": "REQ-KICK-1",
2026-06-21T03:56:28.5782522Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T03:56:28.5782625Z       "requiredStages": [
2026-06-21T03:56:28.5782716Z         "doc",
2026-06-21T03:56:28.5782798Z         "impl",
2026-06-21T03:56:28.5782874Z         "unit",
2026-06-21T03:56:28.5782954Z         "int"
2026-06-21T03:56:28.5783031Z       ],
2026-06-21T03:56:28.5783117Z       "stages": {
2026-06-21T03:56:28.5783199Z         "doc": {
2026-06-21T03:56:28.5783288Z           "complete": true,
2026-06-21T03:56:28.5783372Z           "evidence": [
2026-06-21T03:56:28.5783454Z             {
2026-06-21T03:56:28.5783548Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5783628Z               "line": 342
2026-06-21T03:56:28.5783713Z             }
2026-06-21T03:56:28.5783791Z           ]
2026-06-21T03:56:28.5783872Z         },
2026-06-21T03:56:28.5783957Z         "impl": {
2026-06-21T03:56:28.5784043Z           "complete": true,
2026-06-21T03:56:28.5784129Z           "evidence": [
2026-06-21T03:56:28.5784201Z             {
2026-06-21T03:56:28.5784319Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.5784401Z               "line": 41
2026-06-21T03:56:28.5784473Z             },
2026-06-21T03:56:28.5784559Z             {
2026-06-21T03:56:28.5784653Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.5784735Z               "line": 701
2026-06-21T03:56:28.5784811Z             }
2026-06-21T03:56:28.5784892Z           ]
2026-06-21T03:56:28.5784972Z         },
2026-06-21T03:56:28.5785060Z         "int": {
2026-06-21T03:56:28.5785145Z           "complete": true,
2026-06-21T03:56:28.5785230Z           "evidence": [
2026-06-21T03:56:28.5785316Z             {
2026-06-21T03:56:28.5785436Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.5785516Z               "line": 913
2026-06-21T03:56:28.5785704Z             }
2026-06-21T03:56:28.5785775Z           ]
2026-06-21T03:56:28.5785859Z         },
2026-06-21T03:56:28.5786044Z         "unit": {
2026-06-21T03:56:28.5786125Z           "complete": true,
2026-06-21T03:56:28.5786209Z           "evidence": [
2026-06-21T03:56:28.5786294Z             {
2026-06-21T03:56:28.5786410Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.5786500Z               "line": 205
2026-06-21T03:56:28.5786581Z             }
2026-06-21T03:56:28.5786658Z           ]
2026-06-21T03:56:28.5786739Z         }
2026-06-21T03:56:28.5786820Z       }
2026-06-21T03:56:28.5786900Z     },
2026-06-21T03:56:28.5786973Z     {
2026-06-21T03:56:28.5787068Z       "id": "REQ-MANIFEST-1",
2026-06-21T03:56:28.5787253Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T03:56:28.5787330Z       "requiredStages": [
2026-06-21T03:56:28.5787415Z         "doc",
2026-06-21T03:56:28.5787496Z         "impl",
2026-06-21T03:56:28.5787587Z         "unit"
2026-06-21T03:56:28.5787665Z       ],
2026-06-21T03:56:28.5787749Z       "stages": {
2026-06-21T03:56:28.5787839Z         "doc": {
2026-06-21T03:56:28.5787922Z           "complete": true,
2026-06-21T03:56:28.5788003Z           "evidence": [
2026-06-21T03:56:28.5788078Z             {
2026-06-21T03:56:28.5788178Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.5788261Z               "line": 19
2026-06-21T03:56:28.5788337Z             }
2026-06-21T03:56:28.5788416Z           ]
2026-06-21T03:56:28.5788493Z         },
2026-06-21T03:56:28.5788571Z         "impl": {
2026-06-21T03:56:28.5788656Z           "complete": true,
2026-06-21T03:56:28.5788735Z           "evidence": [
2026-06-21T03:56:28.5788816Z             {
2026-06-21T03:56:28.5788931Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5789097Z               "line": 18
2026-06-21T03:56:28.5789178Z             }
2026-06-21T03:56:28.5789256Z           ]
2026-06-21T03:56:28.5789337Z         },
2026-06-21T03:56:28.5789460Z         "int": {
2026-06-21T03:56:28.5789547Z           "complete": false,
2026-06-21T03:56:28.5789641Z           "evidence": []
2026-06-21T03:56:28.5789731Z         },
2026-06-21T03:56:28.5789808Z         "unit": {
2026-06-21T03:56:28.5789895Z           "complete": true,
2026-06-21T03:56:28.5789984Z           "evidence": [
2026-06-21T03:56:28.5790060Z             {
2026-06-21T03:56:28.5790171Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5790252Z               "line": 1029
2026-06-21T03:56:28.5790333Z             },
2026-06-21T03:56:28.5790409Z             {
2026-06-21T03:56:28.5790520Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5790600Z               "line": 1325
2026-06-21T03:56:28.5790676Z             },
2026-06-21T03:56:28.5790753Z             {
2026-06-21T03:56:28.5790868Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5791028Z               "line": 1337
2026-06-21T03:56:28.5791142Z             },
2026-06-21T03:56:28.5791227Z             {
2026-06-21T03:56:28.5791340Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5791440Z               "line": 1348
2026-06-21T03:56:28.5791532Z             },
2026-06-21T03:56:28.5791664Z             {
2026-06-21T03:56:28.5791784Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5791865Z               "line": 1365
2026-06-21T03:56:28.5791950Z             },
2026-06-21T03:56:28.5792031Z             {
2026-06-21T03:56:28.5792142Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5792228Z               "line": 1379
2026-06-21T03:56:28.5792313Z             },
2026-06-21T03:56:28.5792385Z             {
2026-06-21T03:56:28.5792490Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5792575Z               "line": 1495
2026-06-21T03:56:28.5792661Z             },
2026-06-21T03:56:28.5792738Z             {
2026-06-21T03:56:28.5792957Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5793048Z               "line": 1510
2026-06-21T03:56:28.5793224Z             },
2026-06-21T03:56:28.5793305Z             {
2026-06-21T03:56:28.5793425Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5793509Z               "line": 1621
2026-06-21T03:56:28.5793596Z             },
2026-06-21T03:56:28.5793678Z             {
2026-06-21T03:56:28.5793791Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5793876Z               "line": 1632
2026-06-21T03:56:28.5793942Z             }
2026-06-21T03:56:28.5794024Z           ]
2026-06-21T03:56:28.5794108Z         }
2026-06-21T03:56:28.5794188Z       }
2026-06-21T03:56:28.5794269Z     },
2026-06-21T03:56:28.5794351Z     {
2026-06-21T03:56:28.5794451Z       "id": "REQ-MANIFEST-2",
2026-06-21T03:56:28.5794932Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T03:56:28.5795028Z       "requiredStages": [
2026-06-21T03:56:28.5795114Z         "doc",
2026-06-21T03:56:28.5795222Z         "impl",
2026-06-21T03:56:28.5795315Z         "unit"
2026-06-21T03:56:28.5795390Z       ],
2026-06-21T03:56:28.5795471Z       "stages": {
2026-06-21T03:56:28.5795552Z         "doc": {
2026-06-21T03:56:28.5795634Z           "complete": true,
2026-06-21T03:56:28.5795714Z           "evidence": [
2026-06-21T03:56:28.5795795Z             {
2026-06-21T03:56:28.5795891Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5795973Z               "line": 75
2026-06-21T03:56:28.5796053Z             }
2026-06-21T03:56:28.5796124Z           ]
2026-06-21T03:56:28.5796206Z         },
2026-06-21T03:56:28.5796292Z         "impl": {
2026-06-21T03:56:28.5796372Z           "complete": true,
2026-06-21T03:56:28.5796452Z           "evidence": [
2026-06-21T03:56:28.5796538Z             {
2026-06-21T03:56:28.5796657Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5796741Z               "line": 82
2026-06-21T03:56:28.5796826Z             },
2026-06-21T03:56:28.5796917Z             {
2026-06-21T03:56:28.5797037Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5797126Z               "line": 15
2026-06-21T03:56:28.5797208Z             },
2026-06-21T03:56:28.5797290Z             {
2026-06-21T03:56:28.5797403Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5797489Z               "line": 65
2026-06-21T03:56:28.5797571Z             },
2026-06-21T03:56:28.5797652Z             {
2026-06-21T03:56:28.5797765Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5797853Z               "line": 83
2026-06-21T03:56:28.5797938Z             },
2026-06-21T03:56:28.5798019Z             {
2026-06-21T03:56:28.5798138Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5798220Z               "line": 183
2026-06-21T03:56:28.5798314Z             },
2026-06-21T03:56:28.5798400Z             {
2026-06-21T03:56:28.5798515Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5798610Z               "line": 527
2026-06-21T03:56:28.5798687Z             },
2026-06-21T03:56:28.5798773Z             {
2026-06-21T03:56:28.5798887Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5799034Z               "line": 553
2026-06-21T03:56:28.5799121Z             },
2026-06-21T03:56:28.5799207Z             {
2026-06-21T03:56:28.5799324Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5799409Z               "line": 671
2026-06-21T03:56:28.5799496Z             },
2026-06-21T03:56:28.5799573Z             {
2026-06-21T03:56:28.5799696Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5799787Z               "line": 696
2026-06-21T03:56:28.5799868Z             },
2026-06-21T03:56:28.5799954Z             {
2026-06-21T03:56:28.5800068Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5800269Z               "line": 719
2026-06-21T03:56:28.5800436Z             },
2026-06-21T03:56:28.5800516Z             {
2026-06-21T03:56:28.5800630Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5800707Z               "line": 734
2026-06-21T03:56:28.5800798Z             },
2026-06-21T03:56:28.5800864Z             {
2026-06-21T03:56:28.5800969Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5801056Z               "line": 5567
2026-06-21T03:56:28.5801137Z             },
2026-06-21T03:56:28.5801216Z             {
2026-06-21T03:56:28.5801318Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5801404Z               "line": 5581
2026-06-21T03:56:28.5801475Z             },
2026-06-21T03:56:28.5801559Z             {
2026-06-21T03:56:28.5801664Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5801750Z               "line": 5615
2026-06-21T03:56:28.5801834Z             }
2026-06-21T03:56:28.5801915Z           ]
2026-06-21T03:56:28.5801991Z         },
2026-06-21T03:56:28.5802077Z         "int": {
2026-06-21T03:56:28.5802163Z           "complete": false,
2026-06-21T03:56:28.5802253Z           "evidence": []
2026-06-21T03:56:28.5802330Z         },
2026-06-21T03:56:28.5802411Z         "unit": {
2026-06-21T03:56:28.5802492Z           "complete": true,
2026-06-21T03:56:28.5802582Z           "evidence": [
2026-06-21T03:56:28.5802649Z             {
2026-06-21T03:56:28.5802773Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.5802863Z               "line": 921
2026-06-21T03:56:28.5802940Z             },
2026-06-21T03:56:28.5803027Z             {
2026-06-21T03:56:28.5803131Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5803216Z               "line": 211
2026-06-21T03:56:28.5803298Z             },
2026-06-21T03:56:28.5803379Z             {
2026-06-21T03:56:28.5803488Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5803584Z               "line": 272
2026-06-21T03:56:28.5803666Z             },
2026-06-21T03:56:28.5803745Z             {
2026-06-21T03:56:28.5803860Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5803947Z               "line": 313
2026-06-21T03:56:28.5804027Z             },
2026-06-21T03:56:28.5804113Z             {
2026-06-21T03:56:28.5804224Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5804305Z               "line": 325
2026-06-21T03:56:28.5804379Z             },
2026-06-21T03:56:28.5804465Z             {
2026-06-21T03:56:28.5804569Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5804660Z               "line": 336
2026-06-21T03:56:28.5804744Z             },
2026-06-21T03:56:28.5804815Z             {
2026-06-21T03:56:28.5804930Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5805012Z               "line": 345
2026-06-21T03:56:28.5805101Z             },
2026-06-21T03:56:28.5805182Z             {
2026-06-21T03:56:28.5805293Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5805382Z               "line": 361
2026-06-21T03:56:28.5805459Z             },
2026-06-21T03:56:28.5805546Z             {
2026-06-21T03:56:28.5805660Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5805749Z               "line": 444
2026-06-21T03:56:28.5805831Z             },
2026-06-21T03:56:28.5805917Z             {
2026-06-21T03:56:28.5806026Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5806112Z               "line": 958
2026-06-21T03:56:28.5806195Z             },
2026-06-21T03:56:28.5806274Z             {
2026-06-21T03:56:28.5806393Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5806480Z               "line": 982
2026-06-21T03:56:28.5806556Z             },
2026-06-21T03:56:28.5806631Z             {
2026-06-21T03:56:28.5806746Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5806914Z               "line": 1008
2026-06-21T03:56:28.5807059Z             },
2026-06-21T03:56:28.5807146Z             {
2026-06-21T03:56:28.5807254Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5807339Z               "line": 1027
2026-06-21T03:56:28.5807425Z             },
2026-06-21T03:56:28.5807492Z             {
2026-06-21T03:56:28.5807606Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5807691Z               "line": 1058
2026-06-21T03:56:28.5807778Z             },
2026-06-21T03:56:28.5807869Z             {
2026-06-21T03:56:28.5807973Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.5808059Z               "line": 309
2026-06-21T03:56:28.5808141Z             },
2026-06-21T03:56:28.5808236Z             {
2026-06-21T03:56:28.5808339Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.5808437Z               "line": 606
2026-06-21T03:56:28.5808517Z             },
2026-06-21T03:56:28.5808593Z             {
2026-06-21T03:56:28.5808684Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5808775Z               "line": 8610
2026-06-21T03:56:28.5808855Z             },
2026-06-21T03:56:28.5808936Z             {
2026-06-21T03:56:28.5809118Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5809203Z               "line": 9558
2026-06-21T03:56:28.5809284Z             }
2026-06-21T03:56:28.5809367Z           ]
2026-06-21T03:56:28.5809443Z         }
2026-06-21T03:56:28.5809523Z       }
2026-06-21T03:56:28.5809604Z     },
2026-06-21T03:56:28.5809686Z     {
2026-06-21T03:56:28.5809776Z       "id": "REQ-MANIFEST-3",
2026-06-21T03:56:28.5810400Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T03:56:28.5810500Z       "requiredStages": [
2026-06-21T03:56:28.5810589Z         "doc",
2026-06-21T03:56:28.5810667Z         "impl",
2026-06-21T03:56:28.5810753Z         "unit"
2026-06-21T03:56:28.5810833Z       ],
2026-06-21T03:56:28.5810909Z       "stages": {
2026-06-21T03:56:28.5810991Z         "doc": {
2026-06-21T03:56:28.5811077Z           "complete": true,
2026-06-21T03:56:28.5811162Z           "evidence": [
2026-06-21T03:56:28.5811243Z             {
2026-06-21T03:56:28.5811335Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5811420Z               "line": 81
2026-06-21T03:56:28.5811496Z             }
2026-06-21T03:56:28.5811572Z           ]
2026-06-21T03:56:28.5811645Z         },
2026-06-21T03:56:28.5811730Z         "impl": {
2026-06-21T03:56:28.5811825Z           "complete": true,
2026-06-21T03:56:28.5811906Z           "evidence": [
2026-06-21T03:56:28.5811988Z             {
2026-06-21T03:56:28.5812101Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5812186Z               "line": 92
2026-06-21T03:56:28.5812267Z             },
2026-06-21T03:56:28.5812343Z             {
2026-06-21T03:56:28.5812460Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5812546Z               "line": 101
2026-06-21T03:56:28.5812628Z             },
2026-06-21T03:56:28.5812710Z             {
2026-06-21T03:56:28.5812813Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5812904Z               "line": 132
2026-06-21T03:56:28.5812981Z             },
2026-06-21T03:56:28.5813062Z             {
2026-06-21T03:56:28.5813170Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5813258Z               "line": 577
2026-06-21T03:56:28.5813338Z             },
2026-06-21T03:56:28.5813409Z             {
2026-06-21T03:56:28.5813520Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5813601Z               "line": 633
2026-06-21T03:56:28.5813672Z             },
2026-06-21T03:56:28.5813762Z             {
2026-06-21T03:56:28.5813854Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5814048Z               "line": 5628
2026-06-21T03:56:28.5814129Z             },
2026-06-21T03:56:28.5814324Z             {
2026-06-21T03:56:28.5814425Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5814512Z               "line": 5654
2026-06-21T03:56:28.5814597Z             }
2026-06-21T03:56:28.5814678Z           ]
2026-06-21T03:56:28.5814759Z         },
2026-06-21T03:56:28.5814832Z         "int": {
2026-06-21T03:56:28.5814917Z           "complete": false,
2026-06-21T03:56:28.5815001Z           "evidence": []
2026-06-21T03:56:28.5815081Z         },
2026-06-21T03:56:28.5815168Z         "unit": {
2026-06-21T03:56:28.5815252Z           "complete": true,
2026-06-21T03:56:28.5815337Z           "evidence": [
2026-06-21T03:56:28.5815418Z             {
2026-06-21T03:56:28.5815538Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5815618Z               "line": 371
2026-06-21T03:56:28.5815704Z             },
2026-06-21T03:56:28.5815796Z             {
2026-06-21T03:56:28.5815910Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5815995Z               "line": 429
2026-06-21T03:56:28.5816077Z             },
2026-06-21T03:56:28.5816158Z             {
2026-06-21T03:56:28.5816262Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5816343Z               "line": 1082
2026-06-21T03:56:28.5816435Z             },
2026-06-21T03:56:28.5816515Z             {
2026-06-21T03:56:28.5816615Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5816696Z               "line": 8703
2026-06-21T03:56:28.5816788Z             }
2026-06-21T03:56:28.5816863Z           ]
2026-06-21T03:56:28.5816949Z         }
2026-06-21T03:56:28.5817031Z       }
2026-06-21T03:56:28.5817112Z     },
2026-06-21T03:56:28.5817191Z     {
2026-06-21T03:56:28.5817283Z       "id": "REQ-MANIFEST-4",
2026-06-21T03:56:28.5817975Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T03:56:28.5818086Z       "requiredStages": [
2026-06-21T03:56:28.5818166Z         "doc",
2026-06-21T03:56:28.5818252Z         "impl",
2026-06-21T03:56:28.5818333Z         "unit"
2026-06-21T03:56:28.5818420Z       ],
2026-06-21T03:56:28.5818500Z       "stages": {
2026-06-21T03:56:28.5818585Z         "doc": {
2026-06-21T03:56:28.5818668Z           "complete": true,
2026-06-21T03:56:28.5818753Z           "evidence": [
2026-06-21T03:56:28.5818829Z             {
2026-06-21T03:56:28.5818919Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5819096Z               "line": 88
2026-06-21T03:56:28.5819177Z             }
2026-06-21T03:56:28.5819258Z           ]
2026-06-21T03:56:28.5819335Z         },
2026-06-21T03:56:28.5819415Z         "impl": {
2026-06-21T03:56:28.5819506Z           "complete": true,
2026-06-21T03:56:28.5819597Z           "evidence": [
2026-06-21T03:56:28.5819674Z             {
2026-06-21T03:56:28.5819787Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5819883Z               "line": 100
2026-06-21T03:56:28.5819961Z             },
2026-06-21T03:56:28.5820040Z             {
2026-06-21T03:56:28.5820160Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5820241Z               "line": 183
2026-06-21T03:56:28.5820327Z             },
2026-06-21T03:56:28.5820397Z             {
2026-06-21T03:56:28.5820511Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5820598Z               "line": 83
2026-06-21T03:56:28.5820679Z             },
2026-06-21T03:56:28.5820759Z             {
2026-06-21T03:56:28.5820864Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5820951Z               "line": 629
2026-06-21T03:56:28.5821022Z             },
2026-06-21T03:56:28.5821107Z             {
2026-06-21T03:56:28.5821218Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5821407Z               "line": 654
2026-06-21T03:56:28.5821585Z             }
2026-06-21T03:56:28.5821665Z           ]
2026-06-21T03:56:28.5821751Z         },
2026-06-21T03:56:28.5821832Z         "int": {
2026-06-21T03:56:28.5821928Z           "complete": false,
2026-06-21T03:56:28.5822018Z           "evidence": []
2026-06-21T03:56:28.5822094Z         },
2026-06-21T03:56:28.5822182Z         "unit": {
2026-06-21T03:56:28.5822271Z           "complete": true,
2026-06-21T03:56:28.5822361Z           "evidence": [
2026-06-21T03:56:28.5822438Z             {
2026-06-21T03:56:28.5822553Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5822647Z               "line": 1445
2026-06-21T03:56:28.5822723Z             },
2026-06-21T03:56:28.5822804Z             {
2026-06-21T03:56:28.5822913Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5823001Z               "line": 1478
2026-06-21T03:56:28.5823082Z             },
2026-06-21T03:56:28.5823168Z             {
2026-06-21T03:56:28.5823274Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.5823359Z               "line": 988
2026-06-21T03:56:28.5823450Z             }
2026-06-21T03:56:28.5823522Z           ]
2026-06-21T03:56:28.5823598Z         }
2026-06-21T03:56:28.5823678Z       }
2026-06-21T03:56:28.5823755Z     },
2026-06-21T03:56:28.5823842Z     {
2026-06-21T03:56:28.5823932Z       "id": "REQ-MANIFEST-5",
2026-06-21T03:56:28.5826751Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T03:56:28.5826860Z       "requiredStages": [
2026-06-21T03:56:28.5826946Z         "doc",
2026-06-21T03:56:28.5827033Z         "impl",
2026-06-21T03:56:28.5827113Z         "unit"
2026-06-21T03:56:28.5829727Z       ],
2026-06-21T03:56:28.5829838Z       "stages": {
2026-06-21T03:56:28.5829924Z         "doc": {
2026-06-21T03:56:28.5830023Z           "complete": true,
2026-06-21T03:56:28.5830109Z           "evidence": [
2026-06-21T03:56:28.5830191Z             {
2026-06-21T03:56:28.5830280Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5830385Z               "line": 83
2026-06-21T03:56:28.5830463Z             }
2026-06-21T03:56:28.5830549Z           ]
2026-06-21T03:56:28.5830633Z         },
2026-06-21T03:56:28.5830705Z         "impl": {
2026-06-21T03:56:28.5830792Z           "complete": true,
2026-06-21T03:56:28.5830882Z           "evidence": [
2026-06-21T03:56:28.5830957Z             {
2026-06-21T03:56:28.5831090Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5831177Z               "line": 120
2026-06-21T03:56:28.5831258Z             }
2026-06-21T03:56:28.5831338Z           ]
2026-06-21T03:56:28.5831405Z         },
2026-06-21T03:56:28.5831487Z         "int": {
2026-06-21T03:56:28.5831577Z           "complete": false,
2026-06-21T03:56:28.5831672Z           "evidence": []
2026-06-21T03:56:28.5831749Z         },
2026-06-21T03:56:28.5831830Z         "unit": {
2026-06-21T03:56:28.5831911Z           "complete": true,
2026-06-21T03:56:28.5831996Z           "evidence": [
2026-06-21T03:56:28.5832207Z             {
2026-06-21T03:56:28.5832320Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T03:56:28.5832493Z               "line": 404
2026-06-21T03:56:28.5832573Z             },
2026-06-21T03:56:28.5832654Z             {
2026-06-21T03:56:28.5832774Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5832859Z               "line": 1155
2026-06-21T03:56:28.5832926Z             },
2026-06-21T03:56:28.5833012Z             {
2026-06-21T03:56:28.5833132Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5833202Z               "line": 1184
2026-06-21T03:56:28.5833287Z             },
2026-06-21T03:56:28.5833354Z             {
2026-06-21T03:56:28.5833468Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5833548Z               "line": 1224
2026-06-21T03:56:28.5833633Z             },
2026-06-21T03:56:28.5833719Z             {
2026-06-21T03:56:28.5833820Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5833914Z               "line": 1239
2026-06-21T03:56:28.5833986Z             }
2026-06-21T03:56:28.5834068Z           ]
2026-06-21T03:56:28.5834139Z         }
2026-06-21T03:56:28.5834220Z       }
2026-06-21T03:56:28.5834301Z     },
2026-06-21T03:56:28.5834373Z     {
2026-06-21T03:56:28.5834468Z       "id": "REQ-MANIFEST-6",
2026-06-21T03:56:28.5836567Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T03:56:28.5836677Z       "requiredStages": [
2026-06-21T03:56:28.5836772Z         "doc",
2026-06-21T03:56:28.5836857Z         "unit"
2026-06-21T03:56:28.5836930Z       ],
2026-06-21T03:56:28.5837016Z       "stages": {
2026-06-21T03:56:28.5837091Z         "doc": {
2026-06-21T03:56:28.5837177Z           "complete": true,
2026-06-21T03:56:28.5837274Z           "evidence": [
2026-06-21T03:56:28.5837374Z             {
2026-06-21T03:56:28.5837463Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5837545Z               "line": 141
2026-06-21T03:56:28.5837626Z             }
2026-06-21T03:56:28.5837707Z           ]
2026-06-21T03:56:28.5837783Z         },
2026-06-21T03:56:28.5837860Z         "impl": {
2026-06-21T03:56:28.5837951Z           "complete": false,
2026-06-21T03:56:28.5838031Z           "evidence": []
2026-06-21T03:56:28.5838117Z         },
2026-06-21T03:56:28.5838199Z         "int": {
2026-06-21T03:56:28.5838284Z           "complete": false,
2026-06-21T03:56:28.5838374Z           "evidence": []
2026-06-21T03:56:28.5838446Z         },
2026-06-21T03:56:28.5838543Z         "unit": {
2026-06-21T03:56:28.5838627Z           "complete": true,
2026-06-21T03:56:28.5838722Z           "evidence": [
2026-06-21T03:56:28.5838803Z             {
2026-06-21T03:56:28.5838916Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.5839085Z               "line": 1261
2026-06-21T03:56:28.5839167Z             }
2026-06-21T03:56:28.5839250Z           ]
2026-06-21T03:56:28.5839324Z         }
2026-06-21T03:56:28.5839410Z       }
2026-06-21T03:56:28.5839493Z     },
2026-06-21T03:56:28.5839573Z     {
2026-06-21T03:56:28.5839667Z       "id": "REQ-MANIFEST-7",
2026-06-21T03:56:28.5842628Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T03:56:28.5842933Z       "requiredStages": [
2026-06-21T03:56:28.5843015Z         "doc",
2026-06-21T03:56:28.5843100Z         "impl",
2026-06-21T03:56:28.5843186Z         "unit"
2026-06-21T03:56:28.5843263Z       ],
2026-06-21T03:56:28.5843349Z       "stages": {
2026-06-21T03:56:28.5843443Z         "doc": {
2026-06-21T03:56:28.5843529Z           "complete": true,
2026-06-21T03:56:28.5843616Z           "evidence": [
2026-06-21T03:56:28.5843711Z             {
2026-06-21T03:56:28.5843810Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.5843885Z               "line": 35
2026-06-21T03:56:28.5843967Z             }
2026-06-21T03:56:28.5844047Z           ]
2026-06-21T03:56:28.5844127Z         },
2026-06-21T03:56:28.5844207Z         "impl": {
2026-06-21T03:56:28.5844294Z           "complete": true,
2026-06-21T03:56:28.5844376Z           "evidence": [
2026-06-21T03:56:28.5844460Z             {
2026-06-21T03:56:28.5844575Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.5844662Z               "line": 54
2026-06-21T03:56:28.5844742Z             }
2026-06-21T03:56:28.5844822Z           ]
2026-06-21T03:56:28.5844900Z         },
2026-06-21T03:56:28.5844981Z         "int": {
2026-06-21T03:56:28.5845066Z           "complete": false,
2026-06-21T03:56:28.5845156Z           "evidence": []
2026-06-21T03:56:28.5845234Z         },
2026-06-21T03:56:28.5845314Z         "unit": {
2026-06-21T03:56:28.5845400Z           "complete": true,
2026-06-21T03:56:28.5845486Z           "evidence": [
2026-06-21T03:56:28.5845554Z             {
2026-06-21T03:56:28.5845667Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5845748Z               "line": 1638
2026-06-21T03:56:28.5845829Z             }
2026-06-21T03:56:28.5845911Z           ]
2026-06-21T03:56:28.5845991Z         }
2026-06-21T03:56:28.5846077Z       }
2026-06-21T03:56:28.5846149Z     },
2026-06-21T03:56:28.5846230Z     {
2026-06-21T03:56:28.5846320Z       "id": "REQ-MANIFEST-8",
2026-06-21T03:56:28.5848459Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T03:56:28.5848567Z       "requiredStages": [
2026-06-21T03:56:28.5848648Z         "doc",
2026-06-21T03:56:28.5848731Z         "impl",
2026-06-21T03:56:28.5848807Z         "unit",
2026-06-21T03:56:28.5848891Z         "int"
2026-06-21T03:56:28.5849036Z       ],
2026-06-21T03:56:28.5849121Z       "stages": {
2026-06-21T03:56:28.5849206Z         "doc": {
2026-06-21T03:56:28.5849296Z           "complete": true,
2026-06-21T03:56:28.5849377Z           "evidence": [
2026-06-21T03:56:28.5849462Z             {
2026-06-21T03:56:28.5849546Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5849766Z               "line": 184
2026-06-21T03:56:28.5849847Z             },
2026-06-21T03:56:28.5849932Z             {
2026-06-21T03:56:28.5850128Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.5850209Z               "line": 46
2026-06-21T03:56:28.5850290Z             }
2026-06-21T03:56:28.5850377Z           ]
2026-06-21T03:56:28.5850462Z         },
2026-06-21T03:56:28.5850542Z         "impl": {
2026-06-21T03:56:28.5850639Z           "complete": true,
2026-06-21T03:56:28.5850720Z           "evidence": [
2026-06-21T03:56:28.5850795Z             {
2026-06-21T03:56:28.5850910Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5850987Z               "line": 222
2026-06-21T03:56:28.5851072Z             },
2026-06-21T03:56:28.5851149Z             {
2026-06-21T03:56:28.5851253Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5851335Z               "line": 306
2026-06-21T03:56:28.5851410Z             }
2026-06-21T03:56:28.5851492Z           ]
2026-06-21T03:56:28.5851573Z         },
2026-06-21T03:56:28.5851655Z         "int": {
2026-06-21T03:56:28.5851744Z           "complete": true,
2026-06-21T03:56:28.5851825Z           "evidence": [
2026-06-21T03:56:28.5851913Z             {
2026-06-21T03:56:28.5852036Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:56:28.5852120Z               "line": 18
2026-06-21T03:56:28.5852191Z             }
2026-06-21T03:56:28.5852273Z           ]
2026-06-21T03:56:28.5852350Z         },
2026-06-21T03:56:28.5852425Z         "unit": {
2026-06-21T03:56:28.5852506Z           "complete": true,
2026-06-21T03:56:28.5852592Z           "evidence": [
2026-06-21T03:56:28.5852673Z             {
2026-06-21T03:56:28.5852787Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.5852874Z               "line": 1656
2026-06-21T03:56:28.5852955Z             },
2026-06-21T03:56:28.5853036Z             {
2026-06-21T03:56:28.5853154Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5853237Z               "line": 316
2026-06-21T03:56:28.5853317Z             },
2026-06-21T03:56:28.5853388Z             {
2026-06-21T03:56:28.5853498Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5853580Z               "line": 332
2026-06-21T03:56:28.5853650Z             },
2026-06-21T03:56:28.5853736Z             {
2026-06-21T03:56:28.5853842Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.5853932Z               "line": 345
2026-06-21T03:56:28.5854013Z             },
2026-06-21T03:56:28.5854094Z             {
2026-06-21T03:56:28.5854205Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5854285Z               "line": 422
2026-06-21T03:56:28.5854365Z             },
2026-06-21T03:56:28.5854445Z             {
2026-06-21T03:56:28.5854555Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T03:56:28.5854635Z               "line": 436
2026-06-21T03:56:28.5854706Z             }
2026-06-21T03:56:28.5854787Z           ]
2026-06-21T03:56:28.5854859Z         }
2026-06-21T03:56:28.5854940Z       }
2026-06-21T03:56:28.5855011Z     },
2026-06-21T03:56:28.5855102Z     {
2026-06-21T03:56:28.5855183Z       "id": "REQ-MESH-1",
2026-06-21T03:56:28.5857242Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T03:56:28.5857332Z       "requiredStages": [
2026-06-21T03:56:28.5857502Z         "impl",
2026-06-21T03:56:28.5857582Z         "unit",
2026-06-21T03:56:28.5857663Z         "int"
2026-06-21T03:56:28.5857817Z       ],
2026-06-21T03:56:28.5857897Z       "stages": {
2026-06-21T03:56:28.5857978Z         "doc": {
2026-06-21T03:56:28.5858070Z           "complete": false,
2026-06-21T03:56:28.5858160Z           "evidence": []
2026-06-21T03:56:28.5858235Z         },
2026-06-21T03:56:28.5858312Z         "impl": {
2026-06-21T03:56:28.5858399Z           "complete": true,
2026-06-21T03:56:28.5858489Z           "evidence": [
2026-06-21T03:56:28.5858560Z             {
2026-06-21T03:56:28.5858675Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.5858760Z               "line": 922
2026-06-21T03:56:28.5858837Z             },
2026-06-21T03:56:28.5858918Z             {
2026-06-21T03:56:28.5859122Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5859208Z               "line": 38
2026-06-21T03:56:28.5859296Z             },
2026-06-21T03:56:28.5859386Z             {
2026-06-21T03:56:28.5859500Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5859591Z               "line": 161
2026-06-21T03:56:28.5859672Z             },
2026-06-21T03:56:28.5859747Z             {
2026-06-21T03:56:28.5859865Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5859947Z               "line": 206
2026-06-21T03:56:28.5860032Z             },
2026-06-21T03:56:28.5860111Z             {
2026-06-21T03:56:28.5860230Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.5860312Z               "line": 57
2026-06-21T03:56:28.5860393Z             },
2026-06-21T03:56:28.5860473Z             {
2026-06-21T03:56:28.5860598Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5860679Z               "line": 24
2026-06-21T03:56:28.5860760Z             },
2026-06-21T03:56:28.5860845Z             {
2026-06-21T03:56:28.5860970Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5861051Z               "line": 142
2026-06-21T03:56:28.5861136Z             },
2026-06-21T03:56:28.5861214Z             {
2026-06-21T03:56:28.5861341Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5861427Z               "line": 162
2026-06-21T03:56:28.5861503Z             }
2026-06-21T03:56:28.5861576Z           ]
2026-06-21T03:56:28.5861647Z         },
2026-06-21T03:56:28.5861732Z         "int": {
2026-06-21T03:56:28.5861818Z           "complete": true,
2026-06-21T03:56:28.5861905Z           "evidence": [
2026-06-21T03:56:28.5861985Z             {
2026-06-21T03:56:28.5862104Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:56:28.5862191Z               "line": 67
2026-06-21T03:56:28.5862272Z             },
2026-06-21T03:56:28.5862352Z             {
2026-06-21T03:56:28.5862468Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:56:28.5862544Z               "line": 93
2026-06-21T03:56:28.5862633Z             },
2026-06-21T03:56:28.5862709Z             {
2026-06-21T03:56:28.5862838Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:56:28.5862910Z               "line": 117
2026-06-21T03:56:28.5862995Z             },
2026-06-21T03:56:28.5863071Z             {
2026-06-21T03:56:28.5863196Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T03:56:28.5863277Z               "line": 134
2026-06-21T03:56:28.5863352Z             }
2026-06-21T03:56:28.5863434Z           ]
2026-06-21T03:56:28.5863516Z         },
2026-06-21T03:56:28.5863592Z         "unit": {
2026-06-21T03:56:28.5863681Z           "complete": true,
2026-06-21T03:56:28.5863768Z           "evidence": [
2026-06-21T03:56:28.5863844Z             {
2026-06-21T03:56:28.5863953Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.5864039Z               "line": 427
2026-06-21T03:56:28.5864121Z             },
2026-06-21T03:56:28.5864315Z             {
2026-06-21T03:56:28.5864441Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5864620Z               "line": 376
2026-06-21T03:56:28.5864697Z             },
2026-06-21T03:56:28.5864775Z             {
2026-06-21T03:56:28.5864892Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5864982Z               "line": 412
2026-06-21T03:56:28.5865053Z             },
2026-06-21T03:56:28.5865139Z             {
2026-06-21T03:56:28.5865261Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5865347Z               "line": 427
2026-06-21T03:56:28.5865429Z             },
2026-06-21T03:56:28.5865510Z             {
2026-06-21T03:56:28.5865628Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5865714Z               "line": 438
2026-06-21T03:56:28.5865796Z             },
2026-06-21T03:56:28.5865881Z             {
2026-06-21T03:56:28.5866001Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5866087Z               "line": 449
2026-06-21T03:56:28.5866172Z             },
2026-06-21T03:56:28.5866253Z             {
2026-06-21T03:56:28.5866383Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5866473Z               "line": 460
2026-06-21T03:56:28.5866553Z             },
2026-06-21T03:56:28.5866635Z             {
2026-06-21T03:56:28.5866739Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5866830Z               "line": 496
2026-06-21T03:56:28.5866906Z             },
2026-06-21T03:56:28.5866989Z             {
2026-06-21T03:56:28.5867111Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5867192Z               "line": 519
2026-06-21T03:56:28.5867274Z             },
2026-06-21T03:56:28.5867355Z             {
2026-06-21T03:56:28.5867478Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5867555Z               "line": 546
2026-06-21T03:56:28.5867637Z             }
2026-06-21T03:56:28.5867712Z           ]
2026-06-21T03:56:28.5867802Z         }
2026-06-21T03:56:28.5867882Z       }
2026-06-21T03:56:28.5867964Z     },
2026-06-21T03:56:28.5868043Z     {
2026-06-21T03:56:28.5868129Z       "id": "REQ-MESH-2",
2026-06-21T03:56:28.5870747Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T03:56:28.5870852Z       "requiredStages": [
2026-06-21T03:56:28.5870939Z         "impl",
2026-06-21T03:56:28.5871015Z         "unit",
2026-06-21T03:56:28.5871096Z         "int"
2026-06-21T03:56:28.5871177Z       ],
2026-06-21T03:56:28.5871258Z       "stages": {
2026-06-21T03:56:28.5871329Z         "doc": {
2026-06-21T03:56:28.5871420Z           "complete": false,
2026-06-21T03:56:28.5871506Z           "evidence": []
2026-06-21T03:56:28.5871587Z         },
2026-06-21T03:56:28.5871677Z         "impl": {
2026-06-21T03:56:28.5871754Z           "complete": true,
2026-06-21T03:56:28.5871849Z           "evidence": [
2026-06-21T03:56:28.5871930Z             {
2026-06-21T03:56:28.5872054Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.5872146Z               "line": 757
2026-06-21T03:56:28.5872321Z             },
2026-06-21T03:56:28.5872403Z             {
2026-06-21T03:56:28.5872521Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5872689Z               "line": 118
2026-06-21T03:56:28.5872770Z             },
2026-06-21T03:56:28.5872850Z             {
2026-06-21T03:56:28.5872969Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5873047Z               "line": 347
2026-06-21T03:56:28.5873128Z             },
2026-06-21T03:56:28.5873212Z             {
2026-06-21T03:56:28.5873316Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5873393Z               "line": 389
2026-06-21T03:56:28.5873475Z             },
2026-06-21T03:56:28.5873564Z             {
2026-06-21T03:56:28.5873669Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5873747Z               "line": 403
2026-06-21T03:56:28.5873828Z             },
2026-06-21T03:56:28.5873902Z             {
2026-06-21T03:56:28.5874014Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5874109Z               "line": 492
2026-06-21T03:56:28.5874194Z             },
2026-06-21T03:56:28.5874275Z             {
2026-06-21T03:56:28.5874386Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5874470Z               "line": 507
2026-06-21T03:56:28.5874556Z             },
2026-06-21T03:56:28.5874623Z             {
2026-06-21T03:56:28.5874738Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5874819Z               "line": 534
2026-06-21T03:56:28.5874899Z             },
2026-06-21T03:56:28.5874977Z             {
2026-06-21T03:56:28.5875100Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5875181Z               "line": 207
2026-06-21T03:56:28.5875248Z             },
2026-06-21T03:56:28.5875330Z             {
2026-06-21T03:56:28.5875457Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5875542Z               "line": 755
2026-06-21T03:56:28.5875638Z             },
2026-06-21T03:56:28.5875713Z             {
2026-06-21T03:56:28.5875841Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5875931Z               "line": 816
2026-06-21T03:56:28.5876017Z             },
2026-06-21T03:56:28.5876103Z             {
2026-06-21T03:56:28.5876217Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5876299Z               "line": 869
2026-06-21T03:56:28.5876380Z             },
2026-06-21T03:56:28.5876465Z             {
2026-06-21T03:56:28.5876580Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5876670Z               "line": 891
2026-06-21T03:56:28.5876751Z             },
2026-06-21T03:56:28.5876832Z             {
2026-06-21T03:56:28.5876952Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5877033Z               "line": 122
2026-06-21T03:56:28.5877123Z             },
2026-06-21T03:56:28.5877200Z             {
2026-06-21T03:56:28.5877323Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5877409Z               "line": 44
2026-06-21T03:56:28.5877481Z             },
2026-06-21T03:56:28.5877563Z             {
2026-06-21T03:56:28.5877671Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5877762Z               "line": 184
2026-06-21T03:56:28.5877849Z             },
2026-06-21T03:56:28.5877930Z             {
2026-06-21T03:56:28.5878039Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5878120Z               "line": 211
2026-06-21T03:56:28.5878202Z             },
2026-06-21T03:56:28.5878277Z             {
2026-06-21T03:56:28.5878381Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5878472Z               "line": 251
2026-06-21T03:56:28.5878544Z             },
2026-06-21T03:56:28.5878618Z             {
2026-06-21T03:56:28.5878722Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5878808Z               "line": 275
2026-06-21T03:56:28.5879069Z             },
2026-06-21T03:56:28.5879157Z             {
2026-06-21T03:56:28.5879375Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5879457Z               "line": 289
2026-06-21T03:56:28.5879537Z             },
2026-06-21T03:56:28.5879618Z             {
2026-06-21T03:56:28.5879723Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5879805Z               "line": 300
2026-06-21T03:56:28.5879890Z             },
2026-06-21T03:56:28.5879971Z             {
2026-06-21T03:56:28.5880067Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5880144Z               "line": 313
2026-06-21T03:56:28.5880219Z             }
2026-06-21T03:56:28.5880295Z           ]
2026-06-21T03:56:28.5880377Z         },
2026-06-21T03:56:28.5880463Z         "int": {
2026-06-21T03:56:28.5880548Z           "complete": true,
2026-06-21T03:56:28.5880629Z           "evidence": [
2026-06-21T03:56:28.5880711Z             {
2026-06-21T03:56:28.5880835Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T03:56:28.5880919Z               "line": 116
2026-06-21T03:56:28.5881009Z             },
2026-06-21T03:56:28.5881091Z             {
2026-06-21T03:56:28.5881217Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T03:56:28.5881297Z               "line": 181
2026-06-21T03:56:28.5881389Z             }
2026-06-21T03:56:28.5881466Z           ]
2026-06-21T03:56:28.5881541Z         },
2026-06-21T03:56:28.5881622Z         "unit": {
2026-06-21T03:56:28.5881709Z           "complete": true,
2026-06-21T03:56:28.5881804Z           "evidence": [
2026-06-21T03:56:28.5881875Z             {
2026-06-21T03:56:28.5881999Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5882080Z               "line": 999
2026-06-21T03:56:28.5882166Z             },
2026-06-21T03:56:28.5882247Z             {
2026-06-21T03:56:28.5882358Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5882462Z               "line": 1016
2026-06-21T03:56:28.5882542Z             },
2026-06-21T03:56:28.5882624Z             {
2026-06-21T03:56:28.5882738Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5882829Z               "line": 1024
2026-06-21T03:56:28.5882910Z             },
2026-06-21T03:56:28.5882992Z             {
2026-06-21T03:56:28.5883101Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5883172Z               "line": 1048
2026-06-21T03:56:28.5883254Z             },
2026-06-21T03:56:28.5883335Z             {
2026-06-21T03:56:28.5883462Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.5883554Z               "line": 1499
2026-06-21T03:56:28.5883632Z             },
2026-06-21T03:56:28.5883711Z             {
2026-06-21T03:56:28.5883814Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5883905Z               "line": 347
2026-06-21T03:56:28.5883987Z             },
2026-06-21T03:56:28.5884082Z             {
2026-06-21T03:56:28.5884201Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5884282Z               "line": 370
2026-06-21T03:56:28.5884368Z             },
2026-06-21T03:56:28.5884449Z             {
2026-06-21T03:56:28.5884559Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5884636Z               "line": 407
2026-06-21T03:56:28.5884722Z             },
2026-06-21T03:56:28.5884806Z             {
2026-06-21T03:56:28.5884908Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5884998Z               "line": 431
2026-06-21T03:56:28.5885083Z             },
2026-06-21T03:56:28.5885169Z             {
2026-06-21T03:56:28.5885270Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5885355Z               "line": 483
2026-06-21T03:56:28.5885440Z             },
2026-06-21T03:56:28.5885513Z             {
2026-06-21T03:56:28.5885623Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5885813Z               "line": 499
2026-06-21T03:56:28.5885900Z             },
2026-06-21T03:56:28.5886055Z             {
2026-06-21T03:56:28.5886169Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5886255Z               "line": 514
2026-06-21T03:56:28.5886325Z             },
2026-06-21T03:56:28.5886405Z             {
2026-06-21T03:56:28.5886510Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5886592Z               "line": 531
2026-06-21T03:56:28.5886663Z             }
2026-06-21T03:56:28.5886753Z           ]
2026-06-21T03:56:28.5886834Z         }
2026-06-21T03:56:28.5886911Z       }
2026-06-21T03:56:28.5886992Z     },
2026-06-21T03:56:28.5887073Z     {
2026-06-21T03:56:28.5887164Z       "id": "REQ-MESH-3",
2026-06-21T03:56:28.5888796Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T03:56:28.5888898Z       "requiredStages": [
2026-06-21T03:56:28.5889060Z         "impl",
2026-06-21T03:56:28.5889141Z         "unit",
2026-06-21T03:56:28.5889225Z         "int"
2026-06-21T03:56:28.5889310Z       ],
2026-06-21T03:56:28.5889392Z       "stages": {
2026-06-21T03:56:28.5889473Z         "doc": {
2026-06-21T03:56:28.5889563Z           "complete": false,
2026-06-21T03:56:28.5889653Z           "evidence": []
2026-06-21T03:56:28.5889736Z         },
2026-06-21T03:56:28.5889817Z         "impl": {
2026-06-21T03:56:28.5889901Z           "complete": true,
2026-06-21T03:56:28.5889983Z           "evidence": [
2026-06-21T03:56:28.5890065Z             {
2026-06-21T03:56:28.5890183Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5890278Z               "line": 641
2026-06-21T03:56:28.5890351Z             }
2026-06-21T03:56:28.5890431Z           ]
2026-06-21T03:56:28.5890512Z         },
2026-06-21T03:56:28.5890598Z         "int": {
2026-06-21T03:56:28.5890680Z           "complete": true,
2026-06-21T03:56:28.5890760Z           "evidence": [
2026-06-21T03:56:28.5890841Z             {
2026-06-21T03:56:28.5890957Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T03:56:28.5891038Z               "line": 373
2026-06-21T03:56:28.5891122Z             },
2026-06-21T03:56:28.5891204Z             {
2026-06-21T03:56:28.5891315Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T03:56:28.5891395Z               "line": 436
2026-06-21T03:56:28.5891475Z             }
2026-06-21T03:56:28.5891555Z           ]
2026-06-21T03:56:28.5891641Z         },
2026-06-21T03:56:28.5891721Z         "unit": {
2026-06-21T03:56:28.5891816Z           "complete": true,
2026-06-21T03:56:28.5891896Z           "evidence": [
2026-06-21T03:56:28.5891978Z             {
2026-06-21T03:56:28.5892097Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.5892173Z               "line": 910
2026-06-21T03:56:28.5892254Z             }
2026-06-21T03:56:28.5892331Z           ]
2026-06-21T03:56:28.5892412Z         }
2026-06-21T03:56:28.5892488Z       }
2026-06-21T03:56:28.5892564Z     },
2026-06-21T03:56:28.5892650Z     {
2026-06-21T03:56:28.5892736Z       "id": "REQ-MESH-4",
2026-06-21T03:56:28.5894891Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T03:56:28.5895186Z       "requiredStages": [
2026-06-21T03:56:28.5895272Z         "impl",
2026-06-21T03:56:28.5895362Z         "unit",
2026-06-21T03:56:28.5895443Z         "int"
2026-06-21T03:56:28.5895520Z       ],
2026-06-21T03:56:28.5895610Z       "stages": {
2026-06-21T03:56:28.5895695Z         "doc": {
2026-06-21T03:56:28.5895792Z           "complete": false,
2026-06-21T03:56:28.5895877Z           "evidence": []
2026-06-21T03:56:28.5895968Z         },
2026-06-21T03:56:28.5896054Z         "impl": {
2026-06-21T03:56:28.5896145Z           "complete": true,
2026-06-21T03:56:28.5896234Z           "evidence": [
2026-06-21T03:56:28.5896311Z             {
2026-06-21T03:56:28.5896445Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.5896525Z               "line": 33
2026-06-21T03:56:28.5896620Z             },
2026-06-21T03:56:28.5896705Z             {
2026-06-21T03:56:28.5896829Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5896913Z               "line": 68
2026-06-21T03:56:28.5896994Z             },
2026-06-21T03:56:28.5897075Z             {
2026-06-21T03:56:28.5897186Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5897275Z               "line": 111
2026-06-21T03:56:28.5897361Z             },
2026-06-21T03:56:28.5897439Z             {
2026-06-21T03:56:28.5897562Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5897642Z               "line": 462
2026-06-21T03:56:28.5897729Z             },
2026-06-21T03:56:28.5897809Z             {
2026-06-21T03:56:28.5897928Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5898025Z               "line": 711
2026-06-21T03:56:28.5898106Z             },
2026-06-21T03:56:28.5898196Z             {
2026-06-21T03:56:28.5898315Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5898406Z               "line": 725
2026-06-21T03:56:28.5898487Z             },
2026-06-21T03:56:28.5898562Z             {
2026-06-21T03:56:28.5898669Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.5898754Z               "line": 132
2026-06-21T03:56:28.5898835Z             },
2026-06-21T03:56:28.5898916Z             {
2026-06-21T03:56:28.5899092Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5899173Z               "line": 26
2026-06-21T03:56:28.5899255Z             },
2026-06-21T03:56:28.5899337Z             {
2026-06-21T03:56:28.5899449Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5899534Z               "line": 97
2026-06-21T03:56:28.5899611Z             },
2026-06-21T03:56:28.5899696Z             {
2026-06-21T03:56:28.5899813Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5899899Z               "line": 119
2026-06-21T03:56:28.5899986Z             },
2026-06-21T03:56:28.5900067Z             {
2026-06-21T03:56:28.5900185Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5900272Z               "line": 82
2026-06-21T03:56:28.5900357Z             },
2026-06-21T03:56:28.5900433Z             {
2026-06-21T03:56:28.5900533Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5900616Z               "line": 111
2026-06-21T03:56:28.5900696Z             },
2026-06-21T03:56:28.5900776Z             {
2026-06-21T03:56:28.5900882Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5900964Z               "line": 232
2026-06-21T03:56:28.5901044Z             },
2026-06-21T03:56:28.5901115Z             {
2026-06-21T03:56:28.5901231Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5901425Z               "line": 245
2026-06-21T03:56:28.5901507Z             },
2026-06-21T03:56:28.5901682Z             {
2026-06-21T03:56:28.5901788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5901880Z               "line": 4665
2026-06-21T03:56:28.5901960Z             }
2026-06-21T03:56:28.5902039Z           ]
2026-06-21T03:56:28.5902120Z         },
2026-06-21T03:56:28.5902206Z         "int": {
2026-06-21T03:56:28.5902295Z           "complete": true,
2026-06-21T03:56:28.5902385Z           "evidence": [
2026-06-21T03:56:28.5902466Z             {
2026-06-21T03:56:28.5902581Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T03:56:28.5902671Z               "line": 98
2026-06-21T03:56:28.5902752Z             },
2026-06-21T03:56:28.5902834Z             {
2026-06-21T03:56:28.5902948Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T03:56:28.5903028Z               "line": 140
2026-06-21T03:56:28.5903115Z             }
2026-06-21T03:56:28.5903201Z           ]
2026-06-21T03:56:28.5903282Z         },
2026-06-21T03:56:28.5903367Z         "unit": {
2026-06-21T03:56:28.5903454Z           "complete": true,
2026-06-21T03:56:28.5903539Z           "evidence": [
2026-06-21T03:56:28.5903625Z             {
2026-06-21T03:56:28.5903744Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.5903817Z               "line": 178
2026-06-21T03:56:28.5903906Z             },
2026-06-21T03:56:28.5903992Z             {
2026-06-21T03:56:28.5904117Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.5906624Z               "line": 242
2026-06-21T03:56:28.5906733Z             },
2026-06-21T03:56:28.5906818Z             {
2026-06-21T03:56:28.5906957Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5907053Z               "line": 1079
2026-06-21T03:56:28.5907123Z             },
2026-06-21T03:56:28.5907204Z             {
2026-06-21T03:56:28.5907328Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5907431Z               "line": 1109
2026-06-21T03:56:28.5907516Z             },
2026-06-21T03:56:28.5907602Z             {
2026-06-21T03:56:28.5907717Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T03:56:28.5907798Z               "line": 1129
2026-06-21T03:56:28.5907878Z             },
2026-06-21T03:56:28.5907960Z             {
2026-06-21T03:56:28.5908084Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T03:56:28.5908173Z               "line": 602
2026-06-21T03:56:28.5908251Z             },
2026-06-21T03:56:28.5908332Z             {
2026-06-21T03:56:28.5908436Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5908512Z               "line": 148
2026-06-21T03:56:28.5908599Z             },
2026-06-21T03:56:28.5908680Z             {
2026-06-21T03:56:28.5908789Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5908870Z               "line": 169
2026-06-21T03:56:28.5909028Z             },
2026-06-21T03:56:28.5909104Z             {
2026-06-21T03:56:28.5909224Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5909314Z               "line": 181
2026-06-21T03:56:28.5909390Z             },
2026-06-21T03:56:28.5909471Z             {
2026-06-21T03:56:28.5909572Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T03:56:28.5909657Z               "line": 202
2026-06-21T03:56:28.5909739Z             },
2026-06-21T03:56:28.5909820Z             {
2026-06-21T03:56:28.5909935Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5910014Z               "line": 375
2026-06-21T03:56:28.5910099Z             },
2026-06-21T03:56:28.5910181Z             {
2026-06-21T03:56:28.5910289Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.5910369Z               "line": 407
2026-06-21T03:56:28.5910450Z             },
2026-06-21T03:56:28.5910531Z             {
2026-06-21T03:56:28.5910765Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5910847Z               "line": 10052
2026-06-21T03:56:28.5911017Z             }
2026-06-21T03:56:28.5911103Z           ]
2026-06-21T03:56:28.5911180Z         }
2026-06-21T03:56:28.5911266Z       }
2026-06-21T03:56:28.5911350Z     },
2026-06-21T03:56:28.5911427Z     {
2026-06-21T03:56:28.5911509Z       "id": "REQ-MESH-5",
2026-06-21T03:56:28.5912926Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T03:56:28.5913016Z       "requiredStages": [
2026-06-21T03:56:28.5913098Z         "impl",
2026-06-21T03:56:28.5913185Z         "unit"
2026-06-21T03:56:28.5913269Z       ],
2026-06-21T03:56:28.5913350Z       "stages": {
2026-06-21T03:56:28.5913446Z         "doc": {
2026-06-21T03:56:28.5913527Z           "complete": false,
2026-06-21T03:56:28.5913608Z           "evidence": []
2026-06-21T03:56:28.5913694Z         },
2026-06-21T03:56:28.5913771Z         "impl": {
2026-06-21T03:56:28.5913861Z           "complete": true,
2026-06-21T03:56:28.5913941Z           "evidence": [
2026-06-21T03:56:28.5914024Z             {
2026-06-21T03:56:28.5914151Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.5914232Z               "line": 61
2026-06-21T03:56:28.5914314Z             },
2026-06-21T03:56:28.5914387Z             {
2026-06-21T03:56:28.5914505Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.5914586Z               "line": 109
2026-06-21T03:56:28.5914668Z             },
2026-06-21T03:56:28.5914743Z             {
2026-06-21T03:56:28.5914857Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.5914954Z               "line": 104
2026-06-21T03:56:28.5915035Z             },
2026-06-21T03:56:28.5915124Z             {
2026-06-21T03:56:28.5915234Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.5915326Z               "line": 105
2026-06-21T03:56:28.5915401Z             },
2026-06-21T03:56:28.5915476Z             {
2026-06-21T03:56:28.5915605Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5915687Z               "line": 85
2026-06-21T03:56:28.5915767Z             },
2026-06-21T03:56:28.5915843Z             {
2026-06-21T03:56:28.5915968Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5916054Z               "line": 250
2026-06-21T03:56:28.5916134Z             },
2026-06-21T03:56:28.5916220Z             {
2026-06-21T03:56:28.5916335Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5916411Z               "line": 314
2026-06-21T03:56:28.5916496Z             },
2026-06-21T03:56:28.5916573Z             {
2026-06-21T03:56:28.5916692Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5916782Z               "line": 767
2026-06-21T03:56:28.5916864Z             },
2026-06-21T03:56:28.5916946Z             {
2026-06-21T03:56:28.5917055Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.5917136Z               "line": 101
2026-06-21T03:56:28.5917218Z             },
2026-06-21T03:56:28.5917298Z             {
2026-06-21T03:56:28.5917407Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5917493Z               "line": 193
2026-06-21T03:56:28.5917566Z             }
2026-06-21T03:56:28.5917650Z           ]
2026-06-21T03:56:28.5917731Z         },
2026-06-21T03:56:28.5917811Z         "int": {
2026-06-21T03:56:28.5917907Z           "complete": false,
2026-06-21T03:56:28.5917986Z           "evidence": []
2026-06-21T03:56:28.5918062Z         },
2026-06-21T03:56:28.5918229Z         "unit": {
2026-06-21T03:56:28.5918324Z           "complete": true,
2026-06-21T03:56:28.5918409Z           "evidence": [
2026-06-21T03:56:28.5918554Z             {
2026-06-21T03:56:28.5918668Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5918748Z               "line": 1009
2026-06-21T03:56:28.5918826Z             },
2026-06-21T03:56:28.5918906Z             {
2026-06-21T03:56:28.5919097Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T03:56:28.5919183Z               "line": 462
2026-06-21T03:56:28.5919259Z             }
2026-06-21T03:56:28.5919344Z           ]
2026-06-21T03:56:28.5919416Z         }
2026-06-21T03:56:28.5919498Z       }
2026-06-21T03:56:28.5919574Z     },
2026-06-21T03:56:28.5919655Z     {
2026-06-21T03:56:28.5919731Z       "id": "REQ-MESH-6",
2026-06-21T03:56:28.5920952Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T03:56:28.5921058Z       "requiredStages": [
2026-06-21T03:56:28.5921135Z         "impl",
2026-06-21T03:56:28.5921220Z         "unit"
2026-06-21T03:56:28.5921300Z       ],
2026-06-21T03:56:28.5921383Z       "stages": {
2026-06-21T03:56:28.5921459Z         "doc": {
2026-06-21T03:56:28.5921540Z           "complete": false,
2026-06-21T03:56:28.5921634Z           "evidence": []
2026-06-21T03:56:28.5921707Z         },
2026-06-21T03:56:28.5921793Z         "impl": {
2026-06-21T03:56:28.5921887Z           "complete": true,
2026-06-21T03:56:28.5921964Z           "evidence": [
2026-06-21T03:56:28.5922041Z             {
2026-06-21T03:56:28.5922149Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5922235Z               "line": 4181
2026-06-21T03:56:28.5922317Z             }
2026-06-21T03:56:28.5922403Z           ]
2026-06-21T03:56:28.5922483Z         },
2026-06-21T03:56:28.5922569Z         "int": {
2026-06-21T03:56:28.5922657Z           "complete": false,
2026-06-21T03:56:28.5922742Z           "evidence": []
2026-06-21T03:56:28.5922826Z         },
2026-06-21T03:56:28.5922908Z         "unit": {
2026-06-21T03:56:28.5922990Z           "complete": true,
2026-06-21T03:56:28.5923076Z           "evidence": [
2026-06-21T03:56:28.5923155Z             {
2026-06-21T03:56:28.5923264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5923345Z               "line": 10602
2026-06-21T03:56:28.5923425Z             },
2026-06-21T03:56:28.5923505Z             {
2026-06-21T03:56:28.5923606Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5923687Z               "line": 10629
2026-06-21T03:56:28.5923768Z             },
2026-06-21T03:56:28.5923843Z             {
2026-06-21T03:56:28.5923940Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5924030Z               "line": 10653
2026-06-21T03:56:28.5924111Z             }
2026-06-21T03:56:28.5924197Z           ]
2026-06-21T03:56:28.5924279Z         }
2026-06-21T03:56:28.5924359Z       }
2026-06-21T03:56:28.5924445Z     },
2026-06-21T03:56:28.5924526Z     {
2026-06-21T03:56:28.5924617Z       "id": "REQ-MIGRATE-1",
2026-06-21T03:56:28.5924769Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T03:56:28.5924859Z       "requiredStages": [],
2026-06-21T03:56:28.5924942Z       "stages": {
2026-06-21T03:56:28.5925021Z         "doc": {
2026-06-21T03:56:28.5925107Z           "complete": false,
2026-06-21T03:56:28.5925194Z           "evidence": []
2026-06-21T03:56:28.5925276Z         },
2026-06-21T03:56:28.5925350Z         "impl": {
2026-06-21T03:56:28.5925436Z           "complete": false,
2026-06-21T03:56:28.5925519Z           "evidence": []
2026-06-21T03:56:28.5925600Z         },
2026-06-21T03:56:28.5925684Z         "int": {
2026-06-21T03:56:28.5925876Z           "complete": false,
2026-06-21T03:56:28.5925961Z           "evidence": []
2026-06-21T03:56:28.5926126Z         },
2026-06-21T03:56:28.5926213Z         "unit": {
2026-06-21T03:56:28.5926304Z           "complete": false,
2026-06-21T03:56:28.5926379Z           "evidence": []
2026-06-21T03:56:28.5926460Z         }
2026-06-21T03:56:28.5926538Z       }
2026-06-21T03:56:28.5926619Z     },
2026-06-21T03:56:28.5926699Z     {
2026-06-21T03:56:28.5926790Z       "id": "REQ-MSG-1",
2026-06-21T03:56:28.5927205Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T03:56:28.5927295Z       "requiredStages": [
2026-06-21T03:56:28.5927376Z         "impl",
2026-06-21T03:56:28.5927458Z         "unit",
2026-06-21T03:56:28.5927539Z         "int"
2026-06-21T03:56:28.5927610Z       ],
2026-06-21T03:56:28.5927696Z       "stages": {
2026-06-21T03:56:28.5927778Z         "doc": {
2026-06-21T03:56:28.5927868Z           "complete": false,
2026-06-21T03:56:28.5927953Z           "evidence": []
2026-06-21T03:56:28.5928039Z         },
2026-06-21T03:56:28.5928122Z         "impl": {
2026-06-21T03:56:28.5928210Z           "complete": true,
2026-06-21T03:56:28.5928296Z           "evidence": [
2026-06-21T03:56:28.5928376Z             {
2026-06-21T03:56:28.5928481Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5928565Z               "line": 28
2026-06-21T03:56:28.5928636Z             },
2026-06-21T03:56:28.5928713Z             {
2026-06-21T03:56:28.5928818Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5928899Z               "line": 94
2026-06-21T03:56:28.5929037Z             },
2026-06-21T03:56:28.5929114Z             {
2026-06-21T03:56:28.5929223Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5929303Z               "line": 127
2026-06-21T03:56:28.5929386Z             },
2026-06-21T03:56:28.5929466Z             {
2026-06-21T03:56:28.5929571Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5929657Z               "line": 149
2026-06-21T03:56:28.5929739Z             },
2026-06-21T03:56:28.5929815Z             {
2026-06-21T03:56:28.5929924Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5930010Z               "line": 174
2026-06-21T03:56:28.5930082Z             },
2026-06-21T03:56:28.5930158Z             {
2026-06-21T03:56:28.5930257Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5930335Z               "line": 18
2026-06-21T03:56:28.5930420Z             },
2026-06-21T03:56:28.5930496Z             {
2026-06-21T03:56:28.5930601Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5930679Z               "line": 13
2026-06-21T03:56:28.5930763Z             },
2026-06-21T03:56:28.5930844Z             {
2026-06-21T03:56:28.5930950Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5931031Z               "line": 62
2026-06-21T03:56:28.5931115Z             },
2026-06-21T03:56:28.5931200Z             {
2026-06-21T03:56:28.5931306Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5931395Z               "line": 13
2026-06-21T03:56:28.5931480Z             }
2026-06-21T03:56:28.5931555Z           ]
2026-06-21T03:56:28.5931638Z         },
2026-06-21T03:56:28.5931719Z         "int": {
2026-06-21T03:56:28.5931804Z           "complete": true,
2026-06-21T03:56:28.5931885Z           "evidence": [
2026-06-21T03:56:28.5931971Z             {
2026-06-21T03:56:28.5932104Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:56:28.5932180Z               "line": 9
2026-06-21T03:56:28.5932268Z             },
2026-06-21T03:56:28.5932348Z             {
2026-06-21T03:56:28.5932481Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:56:28.5932562Z               "line": 56
2026-06-21T03:56:28.5932639Z             },
2026-06-21T03:56:28.5932819Z             {
2026-06-21T03:56:28.5932944Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:56:28.5933134Z               "line": 113
2026-06-21T03:56:28.5933217Z             }
2026-06-21T03:56:28.5933297Z           ]
2026-06-21T03:56:28.5933377Z         },
2026-06-21T03:56:28.5933458Z         "unit": {
2026-06-21T03:56:28.5933536Z           "complete": true,
2026-06-21T03:56:28.5933622Z           "evidence": [
2026-06-21T03:56:28.5933706Z             {
2026-06-21T03:56:28.5933815Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5933896Z               "line": 203
2026-06-21T03:56:28.5933971Z             },
2026-06-21T03:56:28.5934051Z             {
2026-06-21T03:56:28.5934156Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5934243Z               "line": 232
2026-06-21T03:56:28.5934319Z             },
2026-06-21T03:56:28.5934394Z             {
2026-06-21T03:56:28.5934500Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5934595Z               "line": 277
2026-06-21T03:56:28.5934676Z             },
2026-06-21T03:56:28.5934766Z             {
2026-06-21T03:56:28.5934872Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5934953Z               "line": 300
2026-06-21T03:56:28.5935033Z             },
2026-06-21T03:56:28.5935105Z             {
2026-06-21T03:56:28.5935210Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T03:56:28.5935291Z               "line": 325
2026-06-21T03:56:28.5935372Z             },
2026-06-21T03:56:28.5935449Z             {
2026-06-21T03:56:28.5935549Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5935630Z               "line": 204
2026-06-21T03:56:28.5935715Z             },
2026-06-21T03:56:28.5935792Z             {
2026-06-21T03:56:28.5935897Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5935978Z               "line": 237
2026-06-21T03:56:28.5936059Z             },
2026-06-21T03:56:28.5936146Z             {
2026-06-21T03:56:28.5936249Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5936345Z               "line": 251
2026-06-21T03:56:28.5936427Z             },
2026-06-21T03:56:28.5936503Z             {
2026-06-21T03:56:28.5936606Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5936691Z               "line": 263
2026-06-21T03:56:28.5936773Z             },
2026-06-21T03:56:28.5936855Z             {
2026-06-21T03:56:28.5936958Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5937045Z               "line": 162
2026-06-21T03:56:28.5937126Z             },
2026-06-21T03:56:28.5937207Z             {
2026-06-21T03:56:28.5937307Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T03:56:28.5937384Z               "line": 242
2026-06-21T03:56:28.5937455Z             },
2026-06-21T03:56:28.5937541Z             {
2026-06-21T03:56:28.5937640Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5937727Z               "line": 134
2026-06-21T03:56:28.5937808Z             },
2026-06-21T03:56:28.5937884Z             {
2026-06-21T03:56:28.5937989Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5938076Z               "line": 153
2026-06-21T03:56:28.5938160Z             }
2026-06-21T03:56:28.5938241Z           ]
2026-06-21T03:56:28.5938309Z         }
2026-06-21T03:56:28.5938391Z       }
2026-06-21T03:56:28.5938470Z     },
2026-06-21T03:56:28.5938556Z     {
2026-06-21T03:56:28.5938633Z       "id": "REQ-MSG-2",
2026-06-21T03:56:28.5938898Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T03:56:28.5939060Z       "requiredStages": [
2026-06-21T03:56:28.5939139Z         "impl",
2026-06-21T03:56:28.5939220Z         "unit"
2026-06-21T03:56:28.5939301Z       ],
2026-06-21T03:56:28.5939383Z       "stages": {
2026-06-21T03:56:28.5939473Z         "doc": {
2026-06-21T03:56:28.5939549Z           "complete": false,
2026-06-21T03:56:28.5939741Z           "evidence": []
2026-06-21T03:56:28.5939821Z         },
2026-06-21T03:56:28.5939993Z         "impl": {
2026-06-21T03:56:28.5940070Z           "complete": true,
2026-06-21T03:56:28.5940155Z           "evidence": [
2026-06-21T03:56:28.5940237Z             {
2026-06-21T03:56:28.5940346Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5940431Z               "line": 11
2026-06-21T03:56:28.5940517Z             },
2026-06-21T03:56:28.5940595Z             {
2026-06-21T03:56:28.5940689Z               "path": "crates/spt/src/main.rs",
2026-06-21T03:56:28.5940775Z               "line": 8
2026-06-21T03:56:28.5940856Z             }
2026-06-21T03:56:28.5940929Z           ]
2026-06-21T03:56:28.5941008Z         },
2026-06-21T03:56:28.5941090Z         "int": {
2026-06-21T03:56:28.5941171Z           "complete": false,
2026-06-21T03:56:28.5941258Z           "evidence": []
2026-06-21T03:56:28.5941337Z         },
2026-06-21T03:56:28.5941414Z         "unit": {
2026-06-21T03:56:28.5941510Z           "complete": true,
2026-06-21T03:56:28.5941601Z           "evidence": [
2026-06-21T03:56:28.5941671Z             {
2026-06-21T03:56:28.5941765Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5941851Z               "line": 7717
2026-06-21T03:56:28.5941932Z             },
2026-06-21T03:56:28.5942011Z             {
2026-06-21T03:56:28.5942115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5942202Z               "line": 7759
2026-06-21T03:56:28.5942279Z             },
2026-06-21T03:56:28.5942364Z             {
2026-06-21T03:56:28.5942459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5942536Z               "line": 7808
2026-06-21T03:56:28.5942617Z             },
2026-06-21T03:56:28.5942693Z             {
2026-06-21T03:56:28.5942793Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5942875Z               "line": 7831
2026-06-21T03:56:28.5942956Z             },
2026-06-21T03:56:28.5943036Z             {
2026-06-21T03:56:28.5943137Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5943227Z               "line": 9807
2026-06-21T03:56:28.5943313Z             },
2026-06-21T03:56:28.5943394Z             {
2026-06-21T03:56:28.5943490Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5943570Z               "line": 9816
2026-06-21T03:56:28.5943642Z             },
2026-06-21T03:56:28.5943723Z             {
2026-06-21T03:56:28.5943819Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5943899Z               "line": 9830
2026-06-21T03:56:28.5943981Z             }
2026-06-21T03:56:28.5944062Z           ]
2026-06-21T03:56:28.5944148Z         }
2026-06-21T03:56:28.5944228Z       }
2026-06-21T03:56:28.5944308Z     },
2026-06-21T03:56:28.5944389Z     {
2026-06-21T03:56:28.5944470Z       "id": "REQ-MSG-3",
2026-06-21T03:56:28.5944841Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T03:56:28.5944940Z       "requiredStages": [
2026-06-21T03:56:28.5945021Z         "impl",
2026-06-21T03:56:28.5945108Z         "unit",
2026-06-21T03:56:28.5945194Z         "int"
2026-06-21T03:56:28.5945278Z       ],
2026-06-21T03:56:28.5945360Z       "stages": {
2026-06-21T03:56:28.5945441Z         "doc": {
2026-06-21T03:56:28.5945527Z           "complete": false,
2026-06-21T03:56:28.5945621Z           "evidence": []
2026-06-21T03:56:28.5945695Z         },
2026-06-21T03:56:28.5945785Z         "impl": {
2026-06-21T03:56:28.5945871Z           "complete": true,
2026-06-21T03:56:28.5945946Z           "evidence": [
2026-06-21T03:56:28.5946043Z             {
2026-06-21T03:56:28.5946151Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T03:56:28.5946256Z               "line": 19
2026-06-21T03:56:28.5946344Z             },
2026-06-21T03:56:28.5946447Z             {
2026-06-21T03:56:28.5946552Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5946629Z               "line": 21
2026-06-21T03:56:28.5946795Z             },
2026-06-21T03:56:28.5946876Z             {
2026-06-21T03:56:28.5947040Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5947124Z               "line": 48
2026-06-21T03:56:28.5947209Z             },
2026-06-21T03:56:28.5947290Z             {
2026-06-21T03:56:28.5947391Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5947481Z               "line": 174
2026-06-21T03:56:28.5947571Z             }
2026-06-21T03:56:28.5947648Z           ]
2026-06-21T03:56:28.5947729Z         },
2026-06-21T03:56:28.5947814Z         "int": {
2026-06-21T03:56:28.5947895Z           "complete": true,
2026-06-21T03:56:28.5947982Z           "evidence": [
2026-06-21T03:56:28.5948063Z             {
2026-06-21T03:56:28.5948196Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:56:28.5948283Z               "line": 10
2026-06-21T03:56:28.5948363Z             },
2026-06-21T03:56:28.5948449Z             {
2026-06-21T03:56:28.5948578Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T03:56:28.5948669Z               "line": 56
2026-06-21T03:56:28.5948745Z             }
2026-06-21T03:56:28.5948825Z           ]
2026-06-21T03:56:28.5948907Z         },
2026-06-21T03:56:28.5949054Z         "unit": {
2026-06-21T03:56:28.5949155Z           "complete": true,
2026-06-21T03:56:28.5949246Z           "evidence": [
2026-06-21T03:56:28.5949322Z             {
2026-06-21T03:56:28.5949430Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5949511Z               "line": 228
2026-06-21T03:56:28.5949597Z             },
2026-06-21T03:56:28.5949672Z             {
2026-06-21T03:56:28.5949780Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5949876Z               "line": 247
2026-06-21T03:56:28.5949953Z             },
2026-06-21T03:56:28.5950033Z             {
2026-06-21T03:56:28.5950143Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.5950234Z               "line": 270
2026-06-21T03:56:28.5950315Z             }
2026-06-21T03:56:28.5950400Z           ]
2026-06-21T03:56:28.5950482Z         }
2026-06-21T03:56:28.5950559Z       }
2026-06-21T03:56:28.5950640Z     },
2026-06-21T03:56:28.5950710Z     {
2026-06-21T03:56:28.5950797Z       "id": "REQ-MSG-4",
2026-06-21T03:56:28.5951597Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T03:56:28.5951688Z       "requiredStages": [
2026-06-21T03:56:28.5951779Z         "impl",
2026-06-21T03:56:28.5951860Z         "unit",
2026-06-21T03:56:28.5951940Z         "int"
2026-06-21T03:56:28.5952022Z       ],
2026-06-21T03:56:28.5952099Z       "stages": {
2026-06-21T03:56:28.5952180Z         "doc": {
2026-06-21T03:56:28.5952269Z           "complete": false,
2026-06-21T03:56:28.5952368Z           "evidence": []
2026-06-21T03:56:28.5952445Z         },
2026-06-21T03:56:28.5952534Z         "impl": {
2026-06-21T03:56:28.5952624Z           "complete": true,
2026-06-21T03:56:28.5952710Z           "evidence": [
2026-06-21T03:56:28.5952796Z             {
2026-06-21T03:56:28.5952900Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5952990Z               "line": 19
2026-06-21T03:56:28.5953073Z             },
2026-06-21T03:56:28.5953158Z             {
2026-06-21T03:56:28.5953262Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5953349Z               "line": 46
2026-06-21T03:56:28.5953435Z             },
2026-06-21T03:56:28.5953516Z             {
2026-06-21T03:56:28.5953629Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5953712Z               "line": 532
2026-06-21T03:56:28.5953797Z             },
2026-06-21T03:56:28.5953868Z             {
2026-06-21T03:56:28.5953973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5954173Z               "line": 3110
2026-06-21T03:56:28.5954245Z             }
2026-06-21T03:56:28.5954422Z           ]
2026-06-21T03:56:28.5954507Z         },
2026-06-21T03:56:28.5954588Z         "int": {
2026-06-21T03:56:28.5954676Z           "complete": true,
2026-06-21T03:56:28.5954756Z           "evidence": [
2026-06-21T03:56:28.5954845Z             {
2026-06-21T03:56:28.5954954Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:56:28.5955045Z               "line": 98
2026-06-21T03:56:28.5955124Z             },
2026-06-21T03:56:28.5955204Z             {
2026-06-21T03:56:28.5955320Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T03:56:28.5955406Z               "line": 128
2026-06-21T03:56:28.5955486Z             }
2026-06-21T03:56:28.5955567Z           ]
2026-06-21T03:56:28.5955658Z         },
2026-06-21T03:56:28.5955735Z         "unit": {
2026-06-21T03:56:28.5955820Z           "complete": true,
2026-06-21T03:56:28.5955906Z           "evidence": [
2026-06-21T03:56:28.5955997Z             {
2026-06-21T03:56:28.5956106Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5956186Z               "line": 68
2026-06-21T03:56:28.5956269Z             },
2026-06-21T03:56:28.5956350Z             {
2026-06-21T03:56:28.5956454Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5956540Z               "line": 79
2026-06-21T03:56:28.5956622Z             },
2026-06-21T03:56:28.5956707Z             {
2026-06-21T03:56:28.5956816Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5956904Z               "line": 90
2026-06-21T03:56:28.5956979Z             },
2026-06-21T03:56:28.5957069Z             {
2026-06-21T03:56:28.5957175Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5957256Z               "line": 151
2026-06-21T03:56:28.5957336Z             }
2026-06-21T03:56:28.5957413Z           ]
2026-06-21T03:56:28.5957504Z         }
2026-06-21T03:56:28.5957585Z       }
2026-06-21T03:56:28.5957665Z     },
2026-06-21T03:56:28.5957745Z     {
2026-06-21T03:56:28.5957836Z       "id": "REQ-MSG-5",
2026-06-21T03:56:28.5958547Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T03:56:28.5958638Z       "requiredStages": [
2026-06-21T03:56:28.5958717Z         "doc",
2026-06-21T03:56:28.5958799Z         "impl",
2026-06-21T03:56:28.5958881Z         "unit"
2026-06-21T03:56:28.5959046Z       ],
2026-06-21T03:56:28.5959124Z       "stages": {
2026-06-21T03:56:28.5959196Z         "doc": {
2026-06-21T03:56:28.5959280Z           "complete": true,
2026-06-21T03:56:28.5959371Z           "evidence": [
2026-06-21T03:56:28.5959449Z             {
2026-06-21T03:56:28.5959549Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5959643Z               "line": 231
2026-06-21T03:56:28.5959720Z             }
2026-06-21T03:56:28.5959797Z           ]
2026-06-21T03:56:28.5959873Z         },
2026-06-21T03:56:28.5959966Z         "impl": {
2026-06-21T03:56:28.5960056Z           "complete": true,
2026-06-21T03:56:28.5960143Z           "evidence": [
2026-06-21T03:56:28.5960218Z             {
2026-06-21T03:56:28.5960340Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5960460Z               "line": 60
2026-06-21T03:56:28.5960538Z             },
2026-06-21T03:56:28.5960621Z             {
2026-06-21T03:56:28.5960727Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5960809Z               "line": 126
2026-06-21T03:56:28.5960894Z             },
2026-06-21T03:56:28.5960974Z             {
2026-06-21T03:56:28.5961085Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5961166Z               "line": 135
2026-06-21T03:56:28.5961242Z             },
2026-06-21T03:56:28.5961323Z             {
2026-06-21T03:56:28.5961642Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5961734Z               "line": 149
2026-06-21T03:56:28.5961904Z             },
2026-06-21T03:56:28.5962001Z             {
2026-06-21T03:56:28.5962147Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5962282Z               "line": 178
2026-06-21T03:56:28.5962359Z             },
2026-06-21T03:56:28.5962434Z             {
2026-06-21T03:56:28.5962543Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5962616Z               "line": 2802
2026-06-21T03:56:28.5962698Z             }
2026-06-21T03:56:28.5962777Z           ]
2026-06-21T03:56:28.5962862Z         },
2026-06-21T03:56:28.5962933Z         "int": {
2026-06-21T03:56:28.5963029Z           "complete": true,
2026-06-21T03:56:28.5963122Z           "evidence": [
2026-06-21T03:56:28.5963203Z             {
2026-06-21T03:56:28.5963318Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T03:56:28.5963399Z               "line": 19
2026-06-21T03:56:28.5963489Z             }
2026-06-21T03:56:28.5963565Z           ]
2026-06-21T03:56:28.5963652Z         },
2026-06-21T03:56:28.5963738Z         "unit": {
2026-06-21T03:56:28.5963818Z           "complete": true,
2026-06-21T03:56:28.5963914Z           "evidence": [
2026-06-21T03:56:28.5963991Z             {
2026-06-21T03:56:28.5964109Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5964190Z               "line": 192
2026-06-21T03:56:28.5964277Z             },
2026-06-21T03:56:28.5964361Z             {
2026-06-21T03:56:28.5964476Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:56:28.5964567Z               "line": 154
2026-06-21T03:56:28.5964639Z             },
2026-06-21T03:56:28.5964714Z             {
2026-06-21T03:56:28.5964820Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5964906Z               "line": 122
2026-06-21T03:56:28.5964991Z             },
2026-06-21T03:56:28.5965067Z             {
2026-06-21T03:56:28.5965178Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5965264Z               "line": 452
2026-06-21T03:56:28.5965353Z             },
2026-06-21T03:56:28.5965434Z             {
2026-06-21T03:56:28.5965538Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5965623Z               "line": 501
2026-06-21T03:56:28.5965703Z             },
2026-06-21T03:56:28.5965793Z             {
2026-06-21T03:56:28.5965904Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5965990Z               "line": 517
2026-06-21T03:56:28.5966070Z             },
2026-06-21T03:56:28.5966156Z             {
2026-06-21T03:56:28.5966266Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.5966347Z               "line": 536
2026-06-21T03:56:28.5966432Z             },
2026-06-21T03:56:28.5966515Z             {
2026-06-21T03:56:28.5966609Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5966694Z               "line": 7660
2026-06-21T03:56:28.5966786Z             }
2026-06-21T03:56:28.5966867Z           ]
2026-06-21T03:56:28.5966938Z         }
2026-06-21T03:56:28.5967023Z       }
2026-06-21T03:56:28.5967100Z     },
2026-06-21T03:56:28.5967182Z     {
2026-06-21T03:56:28.5967267Z       "id": "REQ-MSG-6",
2026-06-21T03:56:28.5968817Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T03:56:28.5968916Z       "requiredStages": [
2026-06-21T03:56:28.5969065Z         "doc",
2026-06-21T03:56:28.5969150Z         "impl",
2026-06-21T03:56:28.5969240Z         "unit"
2026-06-21T03:56:28.5969427Z       ],
2026-06-21T03:56:28.5969516Z       "stages": {
2026-06-21T03:56:28.5969598Z         "doc": {
2026-06-21T03:56:28.5969784Z           "complete": true,
2026-06-21T03:56:28.5969875Z           "evidence": [
2026-06-21T03:56:28.5969960Z             {
2026-06-21T03:56:28.5970056Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.5970146Z               "line": 234
2026-06-21T03:56:28.5970222Z             }
2026-06-21T03:56:28.5970294Z           ]
2026-06-21T03:56:28.5970376Z         },
2026-06-21T03:56:28.5970456Z         "impl": {
2026-06-21T03:56:28.5970541Z           "complete": true,
2026-06-21T03:56:28.5970636Z           "evidence": [
2026-06-21T03:56:28.5970712Z             {
2026-06-21T03:56:28.5970834Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5970915Z               "line": 177
2026-06-21T03:56:28.5970996Z             },
2026-06-21T03:56:28.5971068Z             {
2026-06-21T03:56:28.5971186Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5971287Z               "line": 428
2026-06-21T03:56:28.5971369Z             },
2026-06-21T03:56:28.5971449Z             {
2026-06-21T03:56:28.5973950Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5974058Z               "line": 451
2026-06-21T03:56:28.5974134Z             },
2026-06-21T03:56:28.5974217Z             {
2026-06-21T03:56:28.5974340Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5974421Z               "line": 89
2026-06-21T03:56:28.5974503Z             },
2026-06-21T03:56:28.5974584Z             {
2026-06-21T03:56:28.5974707Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.5974793Z               "line": 155
2026-06-21T03:56:28.5974875Z             }
2026-06-21T03:56:28.5974960Z           ]
2026-06-21T03:56:28.5975041Z         },
2026-06-21T03:56:28.5975118Z         "int": {
2026-06-21T03:56:28.5975204Z           "complete": false,
2026-06-21T03:56:28.5975308Z           "evidence": []
2026-06-21T03:56:28.5975385Z         },
2026-06-21T03:56:28.5975462Z         "unit": {
2026-06-21T03:56:28.5975561Z           "complete": true,
2026-06-21T03:56:28.5975647Z           "evidence": [
2026-06-21T03:56:28.5975728Z             {
2026-06-21T03:56:28.5975853Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.5975942Z               "line": 1746
2026-06-21T03:56:28.5976017Z             },
2026-06-21T03:56:28.5976103Z             {
2026-06-21T03:56:28.5976216Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.5976301Z               "line": 219
2026-06-21T03:56:28.5976372Z             }
2026-06-21T03:56:28.5976454Z           ]
2026-06-21T03:56:28.5976536Z         }
2026-06-21T03:56:28.5976611Z       }
2026-06-21T03:56:28.5976697Z     },
2026-06-21T03:56:28.5976779Z     {
2026-06-21T03:56:28.5976874Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T03:56:28.5980649Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T03:56:28.5981002Z       "requiredStages": [
2026-06-21T03:56:28.5981087Z         "doc",
2026-06-21T03:56:28.5981163Z         "impl",
2026-06-21T03:56:28.5981244Z         "unit",
2026-06-21T03:56:28.5981319Z         "int"
2026-06-21T03:56:28.5981404Z       ],
2026-06-21T03:56:28.5981484Z       "stages": {
2026-06-21T03:56:28.5981561Z         "doc": {
2026-06-21T03:56:28.5981643Z           "complete": true,
2026-06-21T03:56:28.5981728Z           "evidence": [
2026-06-21T03:56:28.5981809Z             {
2026-06-21T03:56:28.5982029Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T03:56:28.5982118Z               "line": 47
2026-06-21T03:56:28.5982196Z             }
2026-06-21T03:56:28.5982277Z           ]
2026-06-21T03:56:28.5982362Z         },
2026-06-21T03:56:28.5982443Z         "impl": {
2026-06-21T03:56:28.5982544Z           "complete": true,
2026-06-21T03:56:28.5982624Z           "evidence": [
2026-06-21T03:56:28.5982719Z             {
2026-06-21T03:56:28.5982835Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5982920Z               "line": 20
2026-06-21T03:56:28.5983001Z             },
2026-06-21T03:56:28.5983082Z             {
2026-06-21T03:56:28.5983183Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5983268Z               "line": 33
2026-06-21T03:56:28.5983354Z             },
2026-06-21T03:56:28.5983426Z             {
2026-06-21T03:56:28.5983517Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5983592Z               "line": 47
2026-06-21T03:56:28.5983669Z             },
2026-06-21T03:56:28.5983751Z             {
2026-06-21T03:56:28.5983851Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5983926Z               "line": 58
2026-06-21T03:56:28.5984006Z             },
2026-06-21T03:56:28.5984092Z             {
2026-06-21T03:56:28.5984196Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5984276Z               "line": 14
2026-06-21T03:56:28.5984361Z             },
2026-06-21T03:56:28.5984433Z             {
2026-06-21T03:56:28.5984539Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5984628Z               "line": 27
2026-06-21T03:56:28.5984709Z             },
2026-06-21T03:56:28.5984782Z             {
2026-06-21T03:56:28.5984877Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5984957Z               "line": 40
2026-06-21T03:56:28.5985039Z             },
2026-06-21T03:56:28.5985116Z             {
2026-06-21T03:56:28.5985220Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.5985300Z               "line": 92
2026-06-21T03:56:28.5985373Z             },
2026-06-21T03:56:28.5985445Z             {
2026-06-21T03:56:28.5985559Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.5985649Z               "line": 143
2026-06-21T03:56:28.5985731Z             },
2026-06-21T03:56:28.5985811Z             {
2026-06-21T03:56:28.5985925Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.5986013Z               "line": 216
2026-06-21T03:56:28.5986094Z             },
2026-06-21T03:56:28.5986173Z             {
2026-06-21T03:56:28.5986288Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.5986375Z               "line": 533
2026-06-21T03:56:28.5986455Z             },
2026-06-21T03:56:28.5986535Z             {
2026-06-21T03:56:28.5986640Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T03:56:28.5986726Z               "line": 78
2026-06-21T03:56:28.5986805Z             },
2026-06-21T03:56:28.5986890Z             {
2026-06-21T03:56:28.5986990Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.5987082Z               "line": 3111
2026-06-21T03:56:28.5987157Z             }
2026-06-21T03:56:28.5987233Z           ]
2026-06-21T03:56:28.5987386Z         },
2026-06-21T03:56:28.5987467Z         "int": {
2026-06-21T03:56:28.5987553Z           "complete": true,
2026-06-21T03:56:28.5987701Z           "evidence": [
2026-06-21T03:56:28.5987787Z             {
2026-06-21T03:56:28.5987911Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T03:56:28.5987997Z               "line": 15
2026-06-21T03:56:28.5988077Z             }
2026-06-21T03:56:28.5988163Z           ]
2026-06-21T03:56:28.5988240Z         },
2026-06-21T03:56:28.5988326Z         "unit": {
2026-06-21T03:56:28.5988412Z           "complete": true,
2026-06-21T03:56:28.5988497Z           "evidence": [
2026-06-21T03:56:28.5988579Z             {
2026-06-21T03:56:28.5988678Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5988755Z               "line": 102
2026-06-21T03:56:28.5988836Z             },
2026-06-21T03:56:28.5988913Z             {
2026-06-21T03:56:28.5989079Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T03:56:28.5989160Z               "line": 137
2026-06-21T03:56:28.5989242Z             },
2026-06-21T03:56:28.5989322Z             {
2026-06-21T03:56:28.5989435Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5989517Z               "line": 98
2026-06-21T03:56:28.5989588Z             },
2026-06-21T03:56:28.5989674Z             {
2026-06-21T03:56:28.5989764Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5989850Z               "line": 106
2026-06-21T03:56:28.5989922Z             },
2026-06-21T03:56:28.5990003Z             {
2026-06-21T03:56:28.5990102Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5990185Z               "line": 113
2026-06-21T03:56:28.5990270Z             },
2026-06-21T03:56:28.5990351Z             {
2026-06-21T03:56:28.5990441Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T03:56:28.5990528Z               "line": 122
2026-06-21T03:56:28.5990613Z             }
2026-06-21T03:56:28.5990694Z           ]
2026-06-21T03:56:28.5990770Z         }
2026-06-21T03:56:28.5990853Z       }
2026-06-21T03:56:28.5990932Z     },
2026-06-21T03:56:28.5991018Z     {
2026-06-21T03:56:28.5991129Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T03:56:28.5996000Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T03:56:28.5996119Z       "requiredStages": [
2026-06-21T03:56:28.5996204Z         "doc",
2026-06-21T03:56:28.5996418Z         "impl",
2026-06-21T03:56:28.5996495Z         "unit",
2026-06-21T03:56:28.5996578Z         "int"
2026-06-21T03:56:28.5996752Z       ],
2026-06-21T03:56:28.5996834Z       "stages": {
2026-06-21T03:56:28.5996916Z         "doc": {
2026-06-21T03:56:28.5997015Z           "complete": true,
2026-06-21T03:56:28.5997095Z           "evidence": [
2026-06-21T03:56:28.5997166Z             {
2026-06-21T03:56:28.5997304Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T03:56:28.5997384Z               "line": 277
2026-06-21T03:56:28.5997469Z             },
2026-06-21T03:56:28.5997550Z             {
2026-06-21T03:56:28.5997652Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.5997740Z               "line": 198
2026-06-21T03:56:28.5997812Z             }
2026-06-21T03:56:28.5997885Z           ]
2026-06-21T03:56:28.5997956Z         },
2026-06-21T03:56:28.5998041Z         "impl": {
2026-06-21T03:56:28.5998132Z           "complete": true,
2026-06-21T03:56:28.5998228Z           "evidence": [
2026-06-21T03:56:28.5998314Z             {
2026-06-21T03:56:28.5998418Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.5998509Z               "line": 977
2026-06-21T03:56:28.5998590Z             },
2026-06-21T03:56:28.5998667Z             {
2026-06-21T03:56:28.5998780Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.5998858Z               "line": 23
2026-06-21T03:56:28.5998933Z             },
2026-06-21T03:56:28.5999095Z             {
2026-06-21T03:56:28.5999215Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.5999295Z               "line": 91
2026-06-21T03:56:28.5999377Z             },
2026-06-21T03:56:28.5999445Z             {
2026-06-21T03:56:28.5999554Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.5999634Z               "line": 239
2026-06-21T03:56:28.5999716Z             },
2026-06-21T03:56:28.5999793Z             {
2026-06-21T03:56:28.5999915Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6000000Z               "line": 287
2026-06-21T03:56:28.6000086Z             },
2026-06-21T03:56:28.6000163Z             {
2026-06-21T03:56:28.6000286Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6000362Z               "line": 311
2026-06-21T03:56:28.6000439Z             },
2026-06-21T03:56:28.6000520Z             {
2026-06-21T03:56:28.6000629Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6000711Z               "line": 60
2026-06-21T03:56:28.6000788Z             },
2026-06-21T03:56:28.6000874Z             {
2026-06-21T03:56:28.6000982Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6001064Z               "line": 889
2026-06-21T03:56:28.6001140Z             }
2026-06-21T03:56:28.6001221Z           ]
2026-06-21T03:56:28.6001302Z         },
2026-06-21T03:56:28.6001384Z         "int": {
2026-06-21T03:56:28.6001469Z           "complete": true,
2026-06-21T03:56:28.6001559Z           "evidence": [
2026-06-21T03:56:28.6001640Z             {
2026-06-21T03:56:28.6001789Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.6001874Z               "line": 1074
2026-06-21T03:56:28.6001960Z             },
2026-06-21T03:56:28.6002038Z             {
2026-06-21T03:56:28.6002179Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.6002264Z               "line": 1179
2026-06-21T03:56:28.6002340Z             },
2026-06-21T03:56:28.6002411Z             {
2026-06-21T03:56:28.6002548Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.6002634Z               "line": 1247
2026-06-21T03:56:28.6002710Z             },
2026-06-21T03:56:28.6002792Z             {
2026-06-21T03:56:28.6002929Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T03:56:28.6003011Z               "line": 1340
2026-06-21T03:56:28.6003201Z             }
2026-06-21T03:56:28.6003287Z           ]
2026-06-21T03:56:28.6003364Z         },
2026-06-21T03:56:28.6003530Z         "unit": {
2026-06-21T03:56:28.6003617Z           "complete": true,
2026-06-21T03:56:28.6003702Z           "evidence": [
2026-06-21T03:56:28.6003783Z             {
2026-06-21T03:56:28.6003897Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.6003989Z               "line": 270
2026-06-21T03:56:28.6004069Z             },
2026-06-21T03:56:28.6004150Z             {
2026-06-21T03:56:28.6004266Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6004346Z               "line": 350
2026-06-21T03:56:28.6004431Z             },
2026-06-21T03:56:28.6004507Z             {
2026-06-21T03:56:28.6004632Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6004712Z               "line": 381
2026-06-21T03:56:28.6004794Z             },
2026-06-21T03:56:28.6004871Z             {
2026-06-21T03:56:28.6004985Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6005074Z               "line": 411
2026-06-21T03:56:28.6005159Z             },
2026-06-21T03:56:28.6005241Z             {
2026-06-21T03:56:28.6005363Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T03:56:28.6005434Z               "line": 440
2026-06-21T03:56:28.6005515Z             },
2026-06-21T03:56:28.6005592Z             {
2026-06-21T03:56:28.6005701Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6005781Z               "line": 1181
2026-06-21T03:56:28.6005864Z             }
2026-06-21T03:56:28.6005945Z           ]
2026-06-21T03:56:28.6006021Z         }
2026-06-21T03:56:28.6006101Z       }
2026-06-21T03:56:28.6006179Z     },
2026-06-21T03:56:28.6006259Z     {
2026-06-21T03:56:28.6006336Z       "id": "REQ-NET-1",
2026-06-21T03:56:28.6006518Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T03:56:28.6006612Z       "requiredStages": [
2026-06-21T03:56:28.6006698Z         "impl",
2026-06-21T03:56:28.6006779Z         "unit",
2026-06-21T03:56:28.6006865Z         "int"
2026-06-21T03:56:28.6006951Z       ],
2026-06-21T03:56:28.6007022Z       "stages": {
2026-06-21T03:56:28.6007103Z         "doc": {
2026-06-21T03:56:28.6007199Z           "complete": false,
2026-06-21T03:56:28.6007284Z           "evidence": []
2026-06-21T03:56:28.6007370Z         },
2026-06-21T03:56:28.6007448Z         "impl": {
2026-06-21T03:56:28.6007533Z           "complete": true,
2026-06-21T03:56:28.6007613Z           "evidence": [
2026-06-21T03:56:28.6007698Z             {
2026-06-21T03:56:28.6007817Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6007897Z               "line": 54
2026-06-21T03:56:28.6007977Z             },
2026-06-21T03:56:28.6008058Z             {
2026-06-21T03:56:28.6008164Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6008245Z               "line": 594
2026-06-21T03:56:28.6008329Z             },
2026-06-21T03:56:28.6008406Z             {
2026-06-21T03:56:28.6008512Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T03:56:28.6008597Z               "line": 130
2026-06-21T03:56:28.6008678Z             },
2026-06-21T03:56:28.6008750Z             {
2026-06-21T03:56:28.6008869Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6009007Z               "line": 97
2026-06-21T03:56:28.6009084Z             },
2026-06-21T03:56:28.6009165Z             {
2026-06-21T03:56:28.6009288Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6009365Z               "line": 159
2026-06-21T03:56:28.6009446Z             },
2026-06-21T03:56:28.6009532Z             {
2026-06-21T03:56:28.6009646Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6009723Z               "line": 175
2026-06-21T03:56:28.6009803Z             },
2026-06-21T03:56:28.6009880Z             {
2026-06-21T03:56:28.6009990Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6010179Z               "line": 190
2026-06-21T03:56:28.6010343Z             },
2026-06-21T03:56:28.6010424Z             {
2026-06-21T03:56:28.6010532Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6010617Z               "line": 271
2026-06-21T03:56:28.6010699Z             },
2026-06-21T03:56:28.6010776Z             {
2026-06-21T03:56:28.6010889Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6010971Z               "line": 306
2026-06-21T03:56:28.6011052Z             },
2026-06-21T03:56:28.6011133Z             {
2026-06-21T03:56:28.6011237Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6011319Z               "line": 312
2026-06-21T03:56:28.6011386Z             },
2026-06-21T03:56:28.6011462Z             {
2026-06-21T03:56:28.6011576Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6011653Z               "line": 318
2026-06-21T03:56:28.6011743Z             },
2026-06-21T03:56:28.6011814Z             {
2026-06-21T03:56:28.6011930Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6012001Z               "line": 334
2026-06-21T03:56:28.6012081Z             },
2026-06-21T03:56:28.6012162Z             {
2026-06-21T03:56:28.6012268Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6012358Z               "line": 354
2026-06-21T03:56:28.6012439Z             },
2026-06-21T03:56:28.6012520Z             {
2026-06-21T03:56:28.6012627Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.6012706Z               "line": 35
2026-06-21T03:56:28.6012786Z             },
2026-06-21T03:56:28.6012857Z             {
2026-06-21T03:56:28.6012963Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.6013046Z               "line": 85
2026-06-21T03:56:28.6013132Z             },
2026-06-21T03:56:28.6013204Z             {
2026-06-21T03:56:28.6013319Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.6013399Z               "line": 138
2026-06-21T03:56:28.6013489Z             },
2026-06-21T03:56:28.6013566Z             {
2026-06-21T03:56:28.6013671Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6013761Z               "line": 2953
2026-06-21T03:56:28.6013843Z             },
2026-06-21T03:56:28.6013919Z             {
2026-06-21T03:56:28.6014028Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6014114Z               "line": 17
2026-06-21T03:56:28.6014191Z             }
2026-06-21T03:56:28.6014267Z           ]
2026-06-21T03:56:28.6014348Z         },
2026-06-21T03:56:28.6014424Z         "int": {
2026-06-21T03:56:28.6014511Z           "complete": true,
2026-06-21T03:56:28.6014595Z           "evidence": [
2026-06-21T03:56:28.6014676Z             {
2026-06-21T03:56:28.6014801Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6014887Z               "line": 341
2026-06-21T03:56:28.6014982Z             },
2026-06-21T03:56:28.6015068Z             {
2026-06-21T03:56:28.6015179Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6015263Z               "line": 675
2026-06-21T03:56:28.6015344Z             },
2026-06-21T03:56:28.6015422Z             {
2026-06-21T03:56:28.6015531Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6015611Z               "line": 973
2026-06-21T03:56:28.6015686Z             }
2026-06-21T03:56:28.6015758Z           ]
2026-06-21T03:56:28.6015844Z         },
2026-06-21T03:56:28.6015927Z         "unit": {
2026-06-21T03:56:28.6016017Z           "complete": true,
2026-06-21T03:56:28.6016094Z           "evidence": [
2026-06-21T03:56:28.6016181Z             {
2026-06-21T03:56:28.6016299Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6016375Z               "line": 651
2026-06-21T03:56:28.6016462Z             },
2026-06-21T03:56:28.6016543Z             {
2026-06-21T03:56:28.6016744Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6016824Z               "line": 686
2026-06-21T03:56:28.6017005Z             },
2026-06-21T03:56:28.6017087Z             {
2026-06-21T03:56:28.6017205Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6017296Z               "line": 940
2026-06-21T03:56:28.6017373Z             },
2026-06-21T03:56:28.6017459Z             {
2026-06-21T03:56:28.6017572Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T03:56:28.6017659Z               "line": 201
2026-06-21T03:56:28.6017740Z             },
2026-06-21T03:56:28.6017811Z             {
2026-06-21T03:56:28.6017926Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6018012Z               "line": 442
2026-06-21T03:56:28.6018093Z             },
2026-06-21T03:56:28.6018173Z             {
2026-06-21T03:56:28.6018296Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6018382Z               "line": 456
2026-06-21T03:56:28.6018466Z             },
2026-06-21T03:56:28.6018551Z             {
2026-06-21T03:56:28.6018671Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6018752Z               "line": 475
2026-06-21T03:56:28.6018833Z             },
2026-06-21T03:56:28.6018913Z             {
2026-06-21T03:56:28.6019105Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.6019181Z               "line": 120
2026-06-21T03:56:28.6019267Z             },
2026-06-21T03:56:28.6019344Z             {
2026-06-21T03:56:28.6019458Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T03:56:28.6019538Z               "line": 163
2026-06-21T03:56:28.6019616Z             },
2026-06-21T03:56:28.6019706Z             {
2026-06-21T03:56:28.6019810Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T03:56:28.6019891Z               "line": 530
2026-06-21T03:56:28.6019968Z             },
2026-06-21T03:56:28.6020054Z             {
2026-06-21T03:56:28.6020154Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6020245Z               "line": 616
2026-06-21T03:56:28.6020326Z             },
2026-06-21T03:56:28.6020406Z             {
2026-06-21T03:56:28.6020511Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6020589Z               "line": 1006
2026-06-21T03:56:28.6020669Z             }
2026-06-21T03:56:28.6020749Z           ]
2026-06-21T03:56:28.6020826Z         }
2026-06-21T03:56:28.6020913Z       }
2026-06-21T03:56:28.6020989Z     },
2026-06-21T03:56:28.6021078Z     {
2026-06-21T03:56:28.6021163Z       "id": "REQ-NET-2",
2026-06-21T03:56:28.6021336Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T03:56:28.6021435Z       "requiredStages": [
2026-06-21T03:56:28.6021516Z         "impl"
2026-06-21T03:56:28.6021603Z       ],
2026-06-21T03:56:28.6021684Z       "stages": {
2026-06-21T03:56:28.6021759Z         "doc": {
2026-06-21T03:56:28.6021856Z           "complete": false,
2026-06-21T03:56:28.6021946Z           "evidence": []
2026-06-21T03:56:28.6022022Z         },
2026-06-21T03:56:28.6022107Z         "impl": {
2026-06-21T03:56:28.6022194Z           "complete": true,
2026-06-21T03:56:28.6022279Z           "evidence": [
2026-06-21T03:56:28.6022365Z             {
2026-06-21T03:56:28.6022470Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.6022552Z               "line": 57
2026-06-21T03:56:28.6022636Z             },
2026-06-21T03:56:28.6022717Z             {
2026-06-21T03:56:28.6022838Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6022923Z               "line": 71
2026-06-21T03:56:28.6023004Z             },
2026-06-21T03:56:28.6023081Z             {
2026-06-21T03:56:28.6023201Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6023280Z               "line": 81
2026-06-21T03:56:28.6023361Z             },
2026-06-21T03:56:28.6023442Z             {
2026-06-21T03:56:28.6023659Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6023749Z               "line": 159
2026-06-21T03:56:28.6023912Z             },
2026-06-21T03:56:28.6023997Z             {
2026-06-21T03:56:28.6024112Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6024198Z               "line": 175
2026-06-21T03:56:28.6024283Z             },
2026-06-21T03:56:28.6024364Z             {
2026-06-21T03:56:28.6024470Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T03:56:28.6024556Z               "line": 190
2026-06-21T03:56:28.6024636Z             }
2026-06-21T03:56:28.6024723Z           ]
2026-06-21T03:56:28.6024799Z         },
2026-06-21T03:56:28.6024875Z         "int": {
2026-06-21T03:56:28.6024960Z           "complete": false,
2026-06-21T03:56:28.6025047Z           "evidence": []
2026-06-21T03:56:28.6025128Z         },
2026-06-21T03:56:28.6025214Z         "unit": {
2026-06-21T03:56:28.6025299Z           "complete": true,
2026-06-21T03:56:28.6025395Z           "evidence": [
2026-06-21T03:56:28.6025480Z             {
2026-06-21T03:56:28.6025594Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.6025682Z               "line": 402
2026-06-21T03:56:28.6025763Z             }
2026-06-21T03:56:28.6025847Z           ]
2026-06-21T03:56:28.6025928Z         }
2026-06-21T03:56:28.6026010Z       }
2026-06-21T03:56:28.6026091Z     },
2026-06-21T03:56:28.6026161Z     {
2026-06-21T03:56:28.6026265Z       "id": "REQ-NET-3",
2026-06-21T03:56:28.6026446Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T03:56:28.6026540Z       "requiredStages": [
2026-06-21T03:56:28.6026626Z         "impl",
2026-06-21T03:56:28.6026707Z         "unit"
2026-06-21T03:56:28.6026793Z       ],
2026-06-21T03:56:28.6026874Z       "stages": {
2026-06-21T03:56:28.6026955Z         "doc": {
2026-06-21T03:56:28.6027046Z           "complete": false,
2026-06-21T03:56:28.6027131Z           "evidence": []
2026-06-21T03:56:28.6027222Z         },
2026-06-21T03:56:28.6027299Z         "impl": {
2026-06-21T03:56:28.6027384Z           "complete": true,
2026-06-21T03:56:28.6027470Z           "evidence": [
2026-06-21T03:56:28.6027555Z             {
2026-06-21T03:56:28.6027657Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.6027746Z               "line": 39
2026-06-21T03:56:28.6027827Z             },
2026-06-21T03:56:28.6027909Z             {
2026-06-21T03:56:28.6028023Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.6028099Z               "line": 182
2026-06-21T03:56:28.6028190Z             },
2026-06-21T03:56:28.6028272Z             {
2026-06-21T03:56:28.6028385Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T03:56:28.6028476Z               "line": 333
2026-06-21T03:56:28.6028549Z             },
2026-06-21T03:56:28.6028634Z             {
2026-06-21T03:56:28.6028738Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:56:28.6028822Z               "line": 36
2026-06-21T03:56:28.6028904Z             },
2026-06-21T03:56:28.6029059Z             {
2026-06-21T03:56:28.6029197Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6029274Z               "line": 158
2026-06-21T03:56:28.6029351Z             },
2026-06-21T03:56:28.6029431Z             {
2026-06-21T03:56:28.6029556Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6029637Z               "line": 238
2026-06-21T03:56:28.6029722Z             },
2026-06-21T03:56:28.6029803Z             {
2026-06-21T03:56:28.6029918Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6030008Z               "line": 259
2026-06-21T03:56:28.6030075Z             },
2026-06-21T03:56:28.6030156Z             {
2026-06-21T03:56:28.6030261Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6030352Z               "line": 317
2026-06-21T03:56:28.6030432Z             },
2026-06-21T03:56:28.6030623Z             {
2026-06-21T03:56:28.6030737Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6030909Z               "line": 336
2026-06-21T03:56:28.6030985Z             },
2026-06-21T03:56:28.6031066Z             {
2026-06-21T03:56:28.6031177Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6031262Z               "line": 374
2026-06-21T03:56:28.6031343Z             },
2026-06-21T03:56:28.6031425Z             {
2026-06-21T03:56:28.6031539Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6031614Z               "line": 419
2026-06-21T03:56:28.6031704Z             },
2026-06-21T03:56:28.6031776Z             {
2026-06-21T03:56:28.6031887Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6031967Z               "line": 432
2026-06-21T03:56:28.6032053Z             },
2026-06-21T03:56:28.6032129Z             {
2026-06-21T03:56:28.6032249Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6032338Z               "line": 29
2026-06-21T03:56:28.6032411Z             },
2026-06-21T03:56:28.6032497Z             {
2026-06-21T03:56:28.6032610Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6032696Z               "line": 72
2026-06-21T03:56:28.6032778Z             },
2026-06-21T03:56:28.6032863Z             {
2026-06-21T03:56:28.6032982Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6033060Z               "line": 123
2026-06-21T03:56:28.6033136Z             }
2026-06-21T03:56:28.6033221Z           ]
2026-06-21T03:56:28.6033297Z         },
2026-06-21T03:56:28.6033380Z         "int": {
2026-06-21T03:56:28.6033484Z           "complete": false,
2026-06-21T03:56:28.6033574Z           "evidence": []
2026-06-21T03:56:28.6033655Z         },
2026-06-21T03:56:28.6033732Z         "unit": {
2026-06-21T03:56:28.6033817Z           "complete": true,
2026-06-21T03:56:28.6033906Z           "evidence": [
2026-06-21T03:56:28.6033987Z             {
2026-06-21T03:56:28.6034111Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.6034209Z               "line": 223
2026-06-21T03:56:28.6034290Z             },
2026-06-21T03:56:28.6034371Z             {
2026-06-21T03:56:28.6034486Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.6034566Z               "line": 351
2026-06-21T03:56:28.6034648Z             },
2026-06-21T03:56:28.6034725Z             {
2026-06-21T03:56:28.6034839Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T03:56:28.6034919Z               "line": 504
2026-06-21T03:56:28.6035006Z             },
2026-06-21T03:56:28.6035077Z             {
2026-06-21T03:56:28.6035186Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:56:28.6035273Z               "line": 93
2026-06-21T03:56:28.6035355Z             },
2026-06-21T03:56:28.6035440Z             {
2026-06-21T03:56:28.6035544Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T03:56:28.6035631Z               "line": 142
2026-06-21T03:56:28.6035712Z             },
2026-06-21T03:56:28.6035797Z             {
2026-06-21T03:56:28.6035917Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6036008Z               "line": 315
2026-06-21T03:56:28.6036097Z             },
2026-06-21T03:56:28.6036173Z             {
2026-06-21T03:56:28.6036290Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6036374Z               "line": 355
2026-06-21T03:56:28.6036450Z             },
2026-06-21T03:56:28.6036532Z             {
2026-06-21T03:56:28.6036643Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T03:56:28.6036726Z               "line": 494
2026-06-21T03:56:28.6036807Z             }
2026-06-21T03:56:28.6036893Z           ]
2026-06-21T03:56:28.6036969Z         }
2026-06-21T03:56:28.6037053Z       }
2026-06-21T03:56:28.6037133Z     },
2026-06-21T03:56:28.6037215Z     {
2026-06-21T03:56:28.6037311Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T03:56:28.6037606Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T03:56:28.6037777Z       "requiredStages": [
2026-06-21T03:56:28.6037854Z         "impl",
2026-06-21T03:56:28.6037935Z         "unit"
2026-06-21T03:56:28.6038011Z       ],
2026-06-21T03:56:28.6038096Z       "stages": {
2026-06-21T03:56:28.6038178Z         "doc": {
2026-06-21T03:56:28.6038259Z           "complete": false,
2026-06-21T03:56:28.6038345Z           "evidence": []
2026-06-21T03:56:28.6038421Z         },
2026-06-21T03:56:28.6038513Z         "impl": {
2026-06-21T03:56:28.6038593Z           "complete": true,
2026-06-21T03:56:28.6038664Z           "evidence": [
2026-06-21T03:56:28.6038750Z             {
2026-06-21T03:56:28.6038866Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6039036Z               "line": 60
2026-06-21T03:56:28.6039114Z             },
2026-06-21T03:56:28.6039195Z             {
2026-06-21T03:56:28.6039312Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6039397Z               "line": 68
2026-06-21T03:56:28.6039488Z             },
2026-06-21T03:56:28.6039568Z             {
2026-06-21T03:56:28.6039686Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6039767Z               "line": 86
2026-06-21T03:56:28.6039854Z             },
2026-06-21T03:56:28.6039934Z             {
2026-06-21T03:56:28.6040048Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6040130Z               "line": 120
2026-06-21T03:56:28.6040211Z             },
2026-06-21T03:56:28.6040291Z             {
2026-06-21T03:56:28.6040392Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6040473Z               "line": 127
2026-06-21T03:56:28.6040550Z             },
2026-06-21T03:56:28.6040625Z             {
2026-06-21T03:56:28.6040741Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6040821Z               "line": 143
2026-06-21T03:56:28.6040912Z             },
2026-06-21T03:56:28.6040992Z             {
2026-06-21T03:56:28.6041098Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:56:28.6041198Z               "line": 16
2026-06-21T03:56:28.6041269Z             }
2026-06-21T03:56:28.6041356Z           ]
2026-06-21T03:56:28.6041432Z         },
2026-06-21T03:56:28.6041507Z         "int": {
2026-06-21T03:56:28.6041588Z           "complete": false,
2026-06-21T03:56:28.6041670Z           "evidence": []
2026-06-21T03:56:28.6041752Z         },
2026-06-21T03:56:28.6041836Z         "unit": {
2026-06-21T03:56:28.6044264Z           "complete": true,
2026-06-21T03:56:28.6044377Z           "evidence": [
2026-06-21T03:56:28.6044462Z             {
2026-06-21T03:56:28.6044591Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6044676Z               "line": 199
2026-06-21T03:56:28.6044751Z             },
2026-06-21T03:56:28.6044831Z             {
2026-06-21T03:56:28.6044951Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6045051Z               "line": 218
2026-06-21T03:56:28.6045136Z             },
2026-06-21T03:56:28.6045213Z             {
2026-06-21T03:56:28.6045318Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6045408Z               "line": 234
2026-06-21T03:56:28.6045475Z             },
2026-06-21T03:56:28.6045557Z             {
2026-06-21T03:56:28.6045666Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T03:56:28.6045746Z               "line": 256
2026-06-21T03:56:28.6045828Z             },
2026-06-21T03:56:28.6045910Z             {
2026-06-21T03:56:28.6046028Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:56:28.6046104Z               "line": 124
2026-06-21T03:56:28.6046191Z             },
2026-06-21T03:56:28.6046267Z             {
2026-06-21T03:56:28.6046381Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:56:28.6046462Z               "line": 140
2026-06-21T03:56:28.6046691Z             },
2026-06-21T03:56:28.6046782Z             {
2026-06-21T03:56:28.6046892Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T03:56:28.6047092Z               "line": 155
2026-06-21T03:56:28.6047174Z             }
2026-06-21T03:56:28.6047254Z           ]
2026-06-21T03:56:28.6047334Z         }
2026-06-21T03:56:28.6047414Z       }
2026-06-21T03:56:28.6047496Z     },
2026-06-21T03:56:28.6047576Z     {
2026-06-21T03:56:28.6047655Z       "id": "REQ-NOTIF-1",
2026-06-21T03:56:28.6048008Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T03:56:28.6048085Z       "requiredStages": [
2026-06-21T03:56:28.6048171Z         "impl",
2026-06-21T03:56:28.6048252Z         "unit",
2026-06-21T03:56:28.6048332Z         "int"
2026-06-21T03:56:28.6048414Z       ],
2026-06-21T03:56:28.6048495Z       "stages": {
2026-06-21T03:56:28.6048567Z         "doc": {
2026-06-21T03:56:28.6048656Z           "complete": false,
2026-06-21T03:56:28.6048748Z           "evidence": []
2026-06-21T03:56:28.6048829Z         },
2026-06-21T03:56:28.6048915Z         "impl": {
2026-06-21T03:56:28.6049068Z           "complete": true,
2026-06-21T03:56:28.6049158Z           "evidence": [
2026-06-21T03:56:28.6049229Z             {
2026-06-21T03:56:28.6049344Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6049431Z               "line": 514
2026-06-21T03:56:28.6049510Z             },
2026-06-21T03:56:28.6049591Z             {
2026-06-21T03:56:28.6049697Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6049788Z               "line": 30
2026-06-21T03:56:28.6049867Z             },
2026-06-21T03:56:28.6049943Z             {
2026-06-21T03:56:28.6050058Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6050133Z               "line": 69
2026-06-21T03:56:28.6050213Z             },
2026-06-21T03:56:28.6050288Z             {
2026-06-21T03:56:28.6050399Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6050476Z               "line": 93
2026-06-21T03:56:28.6050561Z             },
2026-06-21T03:56:28.6050642Z             {
2026-06-21T03:56:28.6050738Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6050814Z               "line": 107
2026-06-21T03:56:28.6050894Z             },
2026-06-21T03:56:28.6050976Z             {
2026-06-21T03:56:28.6051081Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6051161Z               "line": 142
2026-06-21T03:56:28.6051242Z             },
2026-06-21T03:56:28.6051320Z             {
2026-06-21T03:56:28.6051424Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6051504Z               "line": 187
2026-06-21T03:56:28.6051581Z             },
2026-06-21T03:56:28.6051659Z             {
2026-06-21T03:56:28.6051763Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6051853Z               "line": 258
2026-06-21T03:56:28.6051925Z             },
2026-06-21T03:56:28.6052006Z             {
2026-06-21T03:56:28.6052111Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6052196Z               "line": 372
2026-06-21T03:56:28.6052279Z             },
2026-06-21T03:56:28.6052358Z             {
2026-06-21T03:56:28.6052468Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6052546Z               "line": 479
2026-06-21T03:56:28.6052632Z             },
2026-06-21T03:56:28.6052711Z             {
2026-06-21T03:56:28.6052824Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6052906Z               "line": 24
2026-06-21T03:56:28.6052988Z             },
2026-06-21T03:56:28.6053063Z             {
2026-06-21T03:56:28.6053182Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6053264Z               "line": 34
2026-06-21T03:56:28.6053345Z             },
2026-06-21T03:56:28.6053430Z             {
2026-06-21T03:56:28.6053541Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6053730Z               "line": 60
2026-06-21T03:56:28.6053912Z             },
2026-06-21T03:56:28.6053993Z             {
2026-06-21T03:56:28.6054107Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6054185Z               "line": 82
2026-06-21T03:56:28.6054261Z             },
2026-06-21T03:56:28.6054341Z             {
2026-06-21T03:56:28.6054451Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6054533Z               "line": 94
2026-06-21T03:56:28.6054613Z             },
2026-06-21T03:56:28.6054689Z             {
2026-06-21T03:56:28.6054804Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.6054881Z               "line": 96
2026-06-21T03:56:28.6054965Z             },
2026-06-21T03:56:28.6055046Z             {
2026-06-21T03:56:28.6055170Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T03:56:28.6055240Z               "line": 44
2026-06-21T03:56:28.6055330Z             },
2026-06-21T03:56:28.6055401Z             {
2026-06-21T03:56:28.6055511Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.6055606Z               "line": 20
2026-06-21T03:56:28.6055686Z             },
2026-06-21T03:56:28.6055768Z             {
2026-06-21T03:56:28.6055869Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.6055945Z               "line": 30
2026-06-21T03:56:28.6056025Z             },
2026-06-21T03:56:28.6056112Z             {
2026-06-21T03:56:28.6056226Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.6056307Z               "line": 50
2026-06-21T03:56:28.6056388Z             },
2026-06-21T03:56:28.6056465Z             {
2026-06-21T03:56:28.6056579Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6056650Z               "line": 28
2026-06-21T03:56:28.6056722Z             },
2026-06-21T03:56:28.6056794Z             {
2026-06-21T03:56:28.6056903Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6056993Z               "line": 126
2026-06-21T03:56:28.6057080Z             },
2026-06-21T03:56:28.6057161Z             {
2026-06-21T03:56:28.6057270Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6057352Z               "line": 161
2026-06-21T03:56:28.6057433Z             },
2026-06-21T03:56:28.6057508Z             {
2026-06-21T03:56:28.6057613Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6057696Z               "line": 202
2026-06-21T03:56:28.6057781Z             },
2026-06-21T03:56:28.6057847Z             {
2026-06-21T03:56:28.6057941Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6058023Z               "line": 213
2026-06-21T03:56:28.6058094Z             },
2026-06-21T03:56:28.6058168Z             {
2026-06-21T03:56:28.6058273Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6058350Z               "line": 238
2026-06-21T03:56:28.6058431Z             },
2026-06-21T03:56:28.6058512Z             {
2026-06-21T03:56:28.6058625Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6058713Z               "line": 261
2026-06-21T03:56:28.6058794Z             },
2026-06-21T03:56:28.6058868Z             {
2026-06-21T03:56:28.6059079Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6059165Z               "line": 86
2026-06-21T03:56:28.6059246Z             }
2026-06-21T03:56:28.6059323Z           ]
2026-06-21T03:56:28.6059394Z         },
2026-06-21T03:56:28.6059475Z         "int": {
2026-06-21T03:56:28.6059551Z           "complete": true,
2026-06-21T03:56:28.6059642Z           "evidence": [
2026-06-21T03:56:28.6059723Z             {
2026-06-21T03:56:28.6059841Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6059924Z               "line": 285
2026-06-21T03:56:28.6059995Z             },
2026-06-21T03:56:28.6060075Z             {
2026-06-21T03:56:28.6060291Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T03:56:28.6060381Z               "line": 145
2026-06-21T03:56:28.6060561Z             },
2026-06-21T03:56:28.6060632Z             {
2026-06-21T03:56:28.6060740Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6060825Z               "line": 684
2026-06-21T03:56:28.6060902Z             },
2026-06-21T03:56:28.6060974Z             {
2026-06-21T03:56:28.6061083Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6061168Z               "line": 1102
2026-06-21T03:56:28.6061246Z             }
2026-06-21T03:56:28.6061326Z           ]
2026-06-21T03:56:28.6061407Z         },
2026-06-21T03:56:28.6061488Z         "unit": {
2026-06-21T03:56:28.6061570Z           "complete": true,
2026-06-21T03:56:28.6061655Z           "evidence": [
2026-06-21T03:56:28.6061735Z             {
2026-06-21T03:56:28.6061847Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6061928Z               "line": 572
2026-06-21T03:56:28.6062013Z             },
2026-06-21T03:56:28.6062094Z             {
2026-06-21T03:56:28.6062195Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6062275Z               "line": 636
2026-06-21T03:56:28.6062356Z             },
2026-06-21T03:56:28.6062428Z             {
2026-06-21T03:56:28.6062534Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6062618Z               "line": 740
2026-06-21T03:56:28.6062699Z             },
2026-06-21T03:56:28.6062776Z             {
2026-06-21T03:56:28.6062886Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6062970Z               "line": 772
2026-06-21T03:56:28.6063043Z             },
2026-06-21T03:56:28.6063125Z             {
2026-06-21T03:56:28.6063225Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6063304Z               "line": 840
2026-06-21T03:56:28.6063380Z             },
2026-06-21T03:56:28.6063461Z             {
2026-06-21T03:56:28.6063567Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6063652Z               "line": 898
2026-06-21T03:56:28.6063733Z             },
2026-06-21T03:56:28.6063815Z             {
2026-06-21T03:56:28.6063924Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6064009Z               "line": 1173
2026-06-21T03:56:28.6064081Z             },
2026-06-21T03:56:28.6064163Z             {
2026-06-21T03:56:28.6064276Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6064362Z               "line": 157
2026-06-21T03:56:28.6064440Z             },
2026-06-21T03:56:28.6064515Z             {
2026-06-21T03:56:28.6064615Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6064701Z               "line": 250
2026-06-21T03:56:28.6064774Z             },
2026-06-21T03:56:28.6064844Z             {
2026-06-21T03:56:28.6064963Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T03:56:28.6065045Z               "line": 273
2026-06-21T03:56:28.6065126Z             },
2026-06-21T03:56:28.6065196Z             {
2026-06-21T03:56:28.6065306Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.6065389Z               "line": 355
2026-06-21T03:56:28.6065469Z             },
2026-06-21T03:56:28.6065554Z             {
2026-06-21T03:56:28.6065663Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T03:56:28.6065744Z               "line": 392
2026-06-21T03:56:28.6065828Z             },
2026-06-21T03:56:28.6065913Z             {
2026-06-21T03:56:28.6066033Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T03:56:28.6066115Z               "line": 131
2026-06-21T03:56:28.6066190Z             },
2026-06-21T03:56:28.6066261Z             {
2026-06-21T03:56:28.6066372Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.6066457Z               "line": 72
2026-06-21T03:56:28.6066543Z             },
2026-06-21T03:56:28.6066624Z             {
2026-06-21T03:56:28.6066815Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T03:56:28.6066900Z               "line": 97
2026-06-21T03:56:28.6067044Z             },
2026-06-21T03:56:28.6067125Z             {
2026-06-21T03:56:28.6067239Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6067317Z               "line": 379
2026-06-21T03:56:28.6067401Z             },
2026-06-21T03:56:28.6067477Z             {
2026-06-21T03:56:28.6067588Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6067669Z               "line": 417
2026-06-21T03:56:28.6067749Z             },
2026-06-21T03:56:28.6067830Z             {
2026-06-21T03:56:28.6067932Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6068012Z               "line": 433
2026-06-21T03:56:28.6068092Z             },
2026-06-21T03:56:28.6068174Z             {
2026-06-21T03:56:28.6068275Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6068369Z               "line": 472
2026-06-21T03:56:28.6068449Z             },
2026-06-21T03:56:28.6068520Z             {
2026-06-21T03:56:28.6068635Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6068714Z               "line": 489
2026-06-21T03:56:28.6068794Z             },
2026-06-21T03:56:28.6068871Z             {
2026-06-21T03:56:28.6069062Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6069147Z               "line": 517
2026-06-21T03:56:28.6069220Z             },
2026-06-21T03:56:28.6069301Z             {
2026-06-21T03:56:28.6069424Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T03:56:28.6069510Z               "line": 548
2026-06-21T03:56:28.6069587Z             },
2026-06-21T03:56:28.6069663Z             {
2026-06-21T03:56:28.6069776Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6069854Z               "line": 745
2026-06-21T03:56:28.6069931Z             }
2026-06-21T03:56:28.6070006Z           ]
2026-06-21T03:56:28.6070096Z         }
2026-06-21T03:56:28.6070174Z       }
2026-06-21T03:56:28.6070245Z     },
2026-06-21T03:56:28.6070330Z     {
2026-06-21T03:56:28.6070421Z       "id": "REQ-NOTIF-2",
2026-06-21T03:56:28.6070678Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T03:56:28.6070760Z       "requiredStages": [
2026-06-21T03:56:28.6070842Z         "doc",
2026-06-21T03:56:28.6070927Z         "impl",
2026-06-21T03:56:28.6071006Z         "unit",
2026-06-21T03:56:28.6071087Z         "int"
2026-06-21T03:56:28.6071168Z       ],
2026-06-21T03:56:28.6071253Z       "stages": {
2026-06-21T03:56:28.6071328Z         "doc": {
2026-06-21T03:56:28.6071414Z           "complete": true,
2026-06-21T03:56:28.6071495Z           "evidence": [
2026-06-21T03:56:28.6071568Z             {
2026-06-21T03:56:28.6071661Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6071743Z               "line": 509
2026-06-21T03:56:28.6071816Z             },
2026-06-21T03:56:28.6071896Z             {
2026-06-21T03:56:28.6072000Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.6072082Z               "line": 123
2026-06-21T03:56:28.6072163Z             }
2026-06-21T03:56:28.6072240Z           ]
2026-06-21T03:56:28.6072324Z         },
2026-06-21T03:56:28.6072402Z         "impl": {
2026-06-21T03:56:28.6072492Z           "complete": true,
2026-06-21T03:56:28.6072573Z           "evidence": [
2026-06-21T03:56:28.6072649Z             {
2026-06-21T03:56:28.6072750Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6072835Z               "line": 287
2026-06-21T03:56:28.6072917Z             },
2026-06-21T03:56:28.6072988Z             {
2026-06-21T03:56:28.6073094Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6073174Z               "line": 301
2026-06-21T03:56:28.6073255Z             },
2026-06-21T03:56:28.6073336Z             {
2026-06-21T03:56:28.6073437Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6073637Z               "line": 326
2026-06-21T03:56:28.6073718Z             },
2026-06-21T03:56:28.6073878Z             {
2026-06-21T03:56:28.6074002Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6074089Z               "line": 239
2026-06-21T03:56:28.6074160Z             },
2026-06-21T03:56:28.6074236Z             {
2026-06-21T03:56:28.6074346Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6074432Z               "line": 95
2026-06-21T03:56:28.6074512Z             },
2026-06-21T03:56:28.6074593Z             {
2026-06-21T03:56:28.6074695Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6074780Z               "line": 2225
2026-06-21T03:56:28.6074855Z             },
2026-06-21T03:56:28.6074927Z             {
2026-06-21T03:56:28.6075024Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6075108Z               "line": 2274
2026-06-21T03:56:28.6075184Z             },
2026-06-21T03:56:28.6075276Z             {
2026-06-21T03:56:28.6075371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6075452Z               "line": 2353
2026-06-21T03:56:28.6075542Z             },
2026-06-21T03:56:28.6075625Z             {
2026-06-21T03:56:28.6075714Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6075795Z               "line": 2392
2026-06-21T03:56:28.6075876Z             }
2026-06-21T03:56:28.6075954Z           ]
2026-06-21T03:56:28.6076039Z         },
2026-06-21T03:56:28.6076119Z         "int": {
2026-06-21T03:56:28.6076213Z           "complete": true,
2026-06-21T03:56:28.6076295Z           "evidence": [
2026-06-21T03:56:28.6076384Z             {
2026-06-21T03:56:28.6076506Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6076598Z               "line": 810
2026-06-21T03:56:28.6076680Z             },
2026-06-21T03:56:28.6076755Z             {
2026-06-21T03:56:28.6076879Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6076970Z               "line": 1345
2026-06-21T03:56:28.6077046Z             }
2026-06-21T03:56:28.6077122Z           ]
2026-06-21T03:56:28.6077203Z         },
2026-06-21T03:56:28.6077285Z         "unit": {
2026-06-21T03:56:28.6077365Z           "complete": true,
2026-06-21T03:56:28.6077446Z           "evidence": [
2026-06-21T03:56:28.6077514Z             {
2026-06-21T03:56:28.6077628Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6077713Z               "line": 1022
2026-06-21T03:56:28.6077794Z             },
2026-06-21T03:56:28.6077877Z             {
2026-06-21T03:56:28.6077976Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6078061Z               "line": 1090
2026-06-21T03:56:28.6078138Z             },
2026-06-21T03:56:28.6078220Z             {
2026-06-21T03:56:28.6078333Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6078410Z               "line": 8210
2026-06-21T03:56:28.6078497Z             },
2026-06-21T03:56:28.6078586Z             {
2026-06-21T03:56:28.6078691Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6078773Z               "line": 8265
2026-06-21T03:56:28.6078859Z             }
2026-06-21T03:56:28.6079028Z           ]
2026-06-21T03:56:28.6079105Z         }
2026-06-21T03:56:28.6079190Z       }
2026-06-21T03:56:28.6079270Z     },
2026-06-21T03:56:28.6079345Z     {
2026-06-21T03:56:28.6079436Z       "id": "REQ-PAIR-1",
2026-06-21T03:56:28.6079537Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T03:56:28.6079632Z       "requiredStages": [
2026-06-21T03:56:28.6079712Z         "impl",
2026-06-21T03:56:28.6079795Z         "unit",
2026-06-21T03:56:28.6079875Z         "int"
2026-06-21T03:56:28.6079960Z       ],
2026-06-21T03:56:28.6080027Z       "stages": {
2026-06-21T03:56:28.6080114Z         "doc": {
2026-06-21T03:56:28.6080209Z           "complete": false,
2026-06-21T03:56:28.6080285Z           "evidence": []
2026-06-21T03:56:28.6080366Z         },
2026-06-21T03:56:28.6080452Z         "impl": {
2026-06-21T03:56:28.6080661Z           "complete": true,
2026-06-21T03:56:28.6080749Z           "evidence": [
2026-06-21T03:56:28.6080914Z             {
2026-06-21T03:56:28.6081044Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6081130Z               "line": 27
2026-06-21T03:56:28.6081214Z             },
2026-06-21T03:56:28.6081295Z             {
2026-06-21T03:56:28.6081416Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6081496Z               "line": 88
2026-06-21T03:56:28.6081576Z             },
2026-06-21T03:56:28.6081657Z             {
2026-06-21T03:56:28.6081767Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6081846Z               "line": 110
2026-06-21T03:56:28.6081921Z             },
2026-06-21T03:56:28.6082003Z             {
2026-06-21T03:56:28.6082118Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6082208Z               "line": 153
2026-06-21T03:56:28.6082294Z             },
2026-06-21T03:56:28.6082371Z             {
2026-06-21T03:56:28.6082485Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6082570Z               "line": 182
2026-06-21T03:56:28.6082652Z             },
2026-06-21T03:56:28.6082738Z             {
2026-06-21T03:56:28.6082856Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6082937Z               "line": 29
2026-06-21T03:56:28.6083019Z             },
2026-06-21T03:56:28.6083100Z             {
2026-06-21T03:56:28.6083228Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T03:56:28.6083315Z               "line": 31
2026-06-21T03:56:28.6083405Z             },
2026-06-21T03:56:28.6083482Z             {
2026-06-21T03:56:28.6083606Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6083692Z               "line": 44
2026-06-21T03:56:28.6083762Z             },
2026-06-21T03:56:28.6083843Z             {
2026-06-21T03:56:28.6083964Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6084053Z               "line": 171
2026-06-21T03:56:28.6084130Z             },
2026-06-21T03:56:28.6084216Z             {
2026-06-21T03:56:28.6084336Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6084420Z               "line": 376
2026-06-21T03:56:28.6084495Z             }
2026-06-21T03:56:28.6084582Z           ]
2026-06-21T03:56:28.6084668Z         },
2026-06-21T03:56:28.6084744Z         "int": {
2026-06-21T03:56:28.6084839Z           "complete": true,
2026-06-21T03:56:28.6084925Z           "evidence": [
2026-06-21T03:56:28.6085006Z             {
2026-06-21T03:56:28.6085120Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6085202Z               "line": 645
2026-06-21T03:56:28.6085279Z             },
2026-06-21T03:56:28.6085360Z             {
2026-06-21T03:56:28.6085483Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6085574Z               "line": 887
2026-06-21T03:56:28.6085650Z             }
2026-06-21T03:56:28.6085740Z           ]
2026-06-21T03:56:28.6085821Z         },
2026-06-21T03:56:28.6085904Z         "unit": {
2026-06-21T03:56:28.6085988Z           "complete": true,
2026-06-21T03:56:28.6086074Z           "evidence": [
2026-06-21T03:56:28.6086151Z             {
2026-06-21T03:56:28.6086275Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6086355Z               "line": 236
2026-06-21T03:56:28.6086441Z             },
2026-06-21T03:56:28.6086519Z             {
2026-06-21T03:56:28.6086636Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T03:56:28.6086731Z               "line": 349
2026-06-21T03:56:28.6086812Z             },
2026-06-21T03:56:28.6086893Z             {
2026-06-21T03:56:28.6087015Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6087105Z               "line": 194
2026-06-21T03:56:28.6087273Z             },
2026-06-21T03:56:28.6087353Z             {
2026-06-21T03:56:28.6087468Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6087611Z               "line": 216
2026-06-21T03:56:28.6087696Z             },
2026-06-21T03:56:28.6087783Z             {
2026-06-21T03:56:28.6087892Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6087982Z               "line": 230
2026-06-21T03:56:28.6088064Z             },
2026-06-21T03:56:28.6088146Z             {
2026-06-21T03:56:28.6088255Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6088340Z               "line": 242
2026-06-21T03:56:28.6088427Z             },
2026-06-21T03:56:28.6088507Z             {
2026-06-21T03:56:28.6088631Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6088703Z               "line": 256
2026-06-21T03:56:28.6088785Z             },
2026-06-21T03:56:28.6088865Z             {
2026-06-21T03:56:28.6089061Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6089137Z               "line": 270
2026-06-21T03:56:28.6089227Z             },
2026-06-21T03:56:28.6089308Z             {
2026-06-21T03:56:28.6089429Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6089517Z               "line": 277
2026-06-21T03:56:28.6089603Z             },
2026-06-21T03:56:28.6089684Z             {
2026-06-21T03:56:28.6089802Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T03:56:28.6089877Z               "line": 295
2026-06-21T03:56:28.6089957Z             },
2026-06-21T03:56:28.6090030Z             {
2026-06-21T03:56:28.6090135Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6090220Z               "line": 968
2026-06-21T03:56:28.6090296Z             },
2026-06-21T03:56:28.6090378Z             {
2026-06-21T03:56:28.6090483Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6090582Z               "line": 1051
2026-06-21T03:56:28.6090660Z             },
2026-06-21T03:56:28.6090745Z             {
2026-06-21T03:56:28.6090873Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6090955Z               "line": 1121
2026-06-21T03:56:28.6091036Z             },
2026-06-21T03:56:28.6091117Z             {
2026-06-21T03:56:28.6091226Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6091309Z               "line": 1182
2026-06-21T03:56:28.6091394Z             },
2026-06-21T03:56:28.6091469Z             {
2026-06-21T03:56:28.6091580Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6091671Z               "line": 1238
2026-06-21T03:56:28.6091741Z             },
2026-06-21T03:56:28.6091823Z             {
2026-06-21T03:56:28.6091938Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6092024Z               "line": 1457
2026-06-21T03:56:28.6092104Z             }
2026-06-21T03:56:28.6092183Z           ]
2026-06-21T03:56:28.6092265Z         }
2026-06-21T03:56:28.6092345Z       }
2026-06-21T03:56:28.6092430Z     },
2026-06-21T03:56:28.6092505Z     {
2026-06-21T03:56:28.6092602Z       "id": "REQ-PAIR-2",
2026-06-21T03:56:28.6092744Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T03:56:28.6092834Z       "requiredStages": [],
2026-06-21T03:56:28.6092912Z       "stages": {
2026-06-21T03:56:28.6092993Z         "doc": {
2026-06-21T03:56:28.6093083Z           "complete": false,
2026-06-21T03:56:28.6093159Z           "evidence": []
2026-06-21T03:56:28.6093241Z         },
2026-06-21T03:56:28.6093322Z         "impl": {
2026-06-21T03:56:28.6093398Z           "complete": false,
2026-06-21T03:56:28.6093488Z           "evidence": []
2026-06-21T03:56:28.6093574Z         },
2026-06-21T03:56:28.6093655Z         "int": {
2026-06-21T03:56:28.6093741Z           "complete": false,
2026-06-21T03:56:28.6093822Z           "evidence": []
2026-06-21T03:56:28.6094008Z         },
2026-06-21T03:56:28.6094084Z         "unit": {
2026-06-21T03:56:28.6094161Z           "complete": false,
2026-06-21T03:56:28.6094341Z           "evidence": []
2026-06-21T03:56:28.6094422Z         }
2026-06-21T03:56:28.6094505Z       }
2026-06-21T03:56:28.6094585Z     },
2026-06-21T03:56:28.6094660Z     {
2026-06-21T03:56:28.6094742Z       "id": "REQ-PAIR-3",
2026-06-21T03:56:28.6094886Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T03:56:28.6094970Z       "requiredStages": [
2026-06-21T03:56:28.6095051Z         "impl",
2026-06-21T03:56:28.6095137Z         "unit"
2026-06-21T03:56:28.6095219Z       ],
2026-06-21T03:56:28.6095295Z       "stages": {
2026-06-21T03:56:28.6095384Z         "doc": {
2026-06-21T03:56:28.6095480Z           "complete": false,
2026-06-21T03:56:28.6095561Z           "evidence": []
2026-06-21T03:56:28.6095647Z         },
2026-06-21T03:56:28.6095728Z         "impl": {
2026-06-21T03:56:28.6095820Z           "complete": true,
2026-06-21T03:56:28.6095910Z           "evidence": [
2026-06-21T03:56:28.6095994Z             {
2026-06-21T03:56:28.6096101Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6096196Z               "line": 3259
2026-06-21T03:56:28.6096282Z             },
2026-06-21T03:56:28.6096357Z             {
2026-06-21T03:56:28.6096459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6096534Z               "line": 3328
2026-06-21T03:56:28.6096629Z             },
2026-06-21T03:56:28.6096711Z             {
2026-06-21T03:56:28.6096811Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6096900Z               "line": 3709
2026-06-21T03:56:28.6096967Z             },
2026-06-21T03:56:28.6097050Z             {
2026-06-21T03:56:28.6097150Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6097229Z               "line": 4961
2026-06-21T03:56:28.6097314Z             }
2026-06-21T03:56:28.6097396Z           ]
2026-06-21T03:56:28.6097477Z         },
2026-06-21T03:56:28.6097556Z         "int": {
2026-06-21T03:56:28.6097646Z           "complete": false,
2026-06-21T03:56:28.6097732Z           "evidence": []
2026-06-21T03:56:28.6097819Z         },
2026-06-21T03:56:28.6097903Z         "unit": {
2026-06-21T03:56:28.6097985Z           "complete": true,
2026-06-21T03:56:28.6098062Z           "evidence": [
2026-06-21T03:56:28.6098143Z             {
2026-06-21T03:56:28.6098242Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6098324Z               "line": 9964
2026-06-21T03:56:28.6098401Z             },
2026-06-21T03:56:28.6098477Z             {
2026-06-21T03:56:28.6098576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6098658Z               "line": 10179
2026-06-21T03:56:28.6098739Z             },
2026-06-21T03:56:28.6098820Z             {
2026-06-21T03:56:28.6098919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6099072Z               "line": 10838
2026-06-21T03:56:28.6099153Z             },
2026-06-21T03:56:28.6099225Z             {
2026-06-21T03:56:28.6099331Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6099415Z               "line": 10857
2026-06-21T03:56:28.6099492Z             },
2026-06-21T03:56:28.6099573Z             {
2026-06-21T03:56:28.6099665Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6099753Z               "line": 10881
2026-06-21T03:56:28.6099835Z             },
2026-06-21T03:56:28.6099917Z             {
2026-06-21T03:56:28.6100003Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6100092Z               "line": 10900
2026-06-21T03:56:28.6100177Z             },
2026-06-21T03:56:28.6100253Z             {
2026-06-21T03:56:28.6100358Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6100442Z               "line": 10913
2026-06-21T03:56:28.6100527Z             },
2026-06-21T03:56:28.6100604Z             {
2026-06-21T03:56:28.6100700Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6100785Z               "line": 10922
2026-06-21T03:56:28.6100986Z             }
2026-06-21T03:56:28.6101066Z           ]
2026-06-21T03:56:28.6101138Z         }
2026-06-21T03:56:28.6101310Z       }
2026-06-21T03:56:28.6101391Z     },
2026-06-21T03:56:28.6101472Z     {
2026-06-21T03:56:28.6101559Z       "id": "REQ-PAIR-4",
2026-06-21T03:56:28.6101658Z       "title": "Subnet naming on first pairing",
2026-06-21T03:56:28.6101744Z       "requiredStages": [
2026-06-21T03:56:28.6101825Z         "impl",
2026-06-21T03:56:28.6101902Z         "unit"
2026-06-21T03:56:28.6101982Z       ],
2026-06-21T03:56:28.6102058Z       "stages": {
2026-06-21T03:56:28.6102140Z         "doc": {
2026-06-21T03:56:28.6102222Z           "complete": false,
2026-06-21T03:56:28.6102311Z           "evidence": []
2026-06-21T03:56:28.6102392Z         },
2026-06-21T03:56:28.6102470Z         "impl": {
2026-06-21T03:56:28.6102555Z           "complete": true,
2026-06-21T03:56:28.6102630Z           "evidence": [
2026-06-21T03:56:28.6102715Z             {
2026-06-21T03:56:28.6102820Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T03:56:28.6102915Z               "line": 174
2026-06-21T03:56:28.6102990Z             }
2026-06-21T03:56:28.6103080Z           ]
2026-06-21T03:56:28.6103152Z         },
2026-06-21T03:56:28.6103239Z         "int": {
2026-06-21T03:56:28.6103333Z           "complete": false,
2026-06-21T03:56:28.6103414Z           "evidence": []
2026-06-21T03:56:28.6105726Z         },
2026-06-21T03:56:28.6105831Z         "unit": {
2026-06-21T03:56:28.6105916Z           "complete": true,
2026-06-21T03:56:28.6105992Z           "evidence": [
2026-06-21T03:56:28.6106079Z             {
2026-06-21T03:56:28.6106212Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6106302Z               "line": 1294
2026-06-21T03:56:28.6106389Z             }
2026-06-21T03:56:28.6106465Z           ]
2026-06-21T03:56:28.6106550Z         }
2026-06-21T03:56:28.6106627Z       }
2026-06-21T03:56:28.6106699Z     },
2026-06-21T03:56:28.6106775Z     {
2026-06-21T03:56:28.6106874Z       "id": "REQ-PAIR-5",
2026-06-21T03:56:28.6107175Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T03:56:28.6107266Z       "requiredStages": [
2026-06-21T03:56:28.6107348Z         "impl",
2026-06-21T03:56:28.6107428Z         "unit",
2026-06-21T03:56:28.6107514Z         "int"
2026-06-21T03:56:28.6107595Z       ],
2026-06-21T03:56:28.6107677Z       "stages": {
2026-06-21T03:56:28.6107752Z         "doc": {
2026-06-21T03:56:28.6107837Z           "complete": false,
2026-06-21T03:56:28.6107928Z           "evidence": []
2026-06-21T03:56:28.6107999Z         },
2026-06-21T03:56:28.6108088Z         "impl": {
2026-06-21T03:56:28.6108173Z           "complete": true,
2026-06-21T03:56:28.6108245Z           "evidence": [
2026-06-21T03:56:28.6108327Z             {
2026-06-21T03:56:28.6108449Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6108535Z               "line": 44
2026-06-21T03:56:28.6108622Z             },
2026-06-21T03:56:28.6108693Z             {
2026-06-21T03:56:28.6108821Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6108908Z               "line": 96
2026-06-21T03:56:28.6109060Z             },
2026-06-21T03:56:28.6109141Z             {
2026-06-21T03:56:28.6109261Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6109337Z               "line": 107
2026-06-21T03:56:28.6109417Z             },
2026-06-21T03:56:28.6109498Z             {
2026-06-21T03:56:28.6109614Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6109700Z               "line": 124
2026-06-21T03:56:28.6109770Z             },
2026-06-21T03:56:28.6109853Z             {
2026-06-21T03:56:28.6109962Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6110043Z               "line": 155
2026-06-21T03:56:28.6110124Z             },
2026-06-21T03:56:28.6110201Z             {
2026-06-21T03:56:28.6110453Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6110530Z               "line": 195
2026-06-21T03:56:28.6110704Z             },
2026-06-21T03:56:28.6110780Z             {
2026-06-21T03:56:28.6110899Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6110988Z               "line": 251
2026-06-21T03:56:28.6111069Z             },
2026-06-21T03:56:28.6111150Z             {
2026-06-21T03:56:28.6111284Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6111374Z               "line": 33
2026-06-21T03:56:28.6111451Z             },
2026-06-21T03:56:28.6111527Z             {
2026-06-21T03:56:28.6111664Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6111741Z               "line": 45
2026-06-21T03:56:28.6111819Z             },
2026-06-21T03:56:28.6111899Z             {
2026-06-21T03:56:28.6112032Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6112124Z               "line": 59
2026-06-21T03:56:28.6112203Z             },
2026-06-21T03:56:28.6112284Z             {
2026-06-21T03:56:28.6112409Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6112500Z               "line": 376
2026-06-21T03:56:28.6112575Z             }
2026-06-21T03:56:28.6112662Z           ]
2026-06-21T03:56:28.6112744Z         },
2026-06-21T03:56:28.6112824Z         "int": {
2026-06-21T03:56:28.6112904Z           "complete": true,
2026-06-21T03:56:28.6112986Z           "evidence": [
2026-06-21T03:56:28.6113068Z             {
2026-06-21T03:56:28.6113186Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6113266Z               "line": 887
2026-06-21T03:56:28.6113342Z             },
2026-06-21T03:56:28.6113419Z             {
2026-06-21T03:56:28.6113535Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6113616Z               "line": 342
2026-06-21T03:56:28.6113702Z             }
2026-06-21T03:56:28.6113779Z           ]
2026-06-21T03:56:28.6113855Z         },
2026-06-21T03:56:28.6113936Z         "unit": {
2026-06-21T03:56:28.6114032Z           "complete": true,
2026-06-21T03:56:28.6114127Z           "evidence": [
2026-06-21T03:56:28.6114203Z             {
2026-06-21T03:56:28.6114322Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6114403Z               "line": 293
2026-06-21T03:56:28.6114485Z             },
2026-06-21T03:56:28.6114570Z             {
2026-06-21T03:56:28.6114691Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6114775Z               "line": 304
2026-06-21T03:56:28.6114851Z             },
2026-06-21T03:56:28.6114932Z             {
2026-06-21T03:56:28.6115043Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6115119Z               "line": 406
2026-06-21T03:56:28.6115200Z             },
2026-06-21T03:56:28.6115277Z             {
2026-06-21T03:56:28.6115414Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6115495Z               "line": 72
2026-06-21T03:56:28.6115572Z             },
2026-06-21T03:56:28.6115640Z             {
2026-06-21T03:56:28.6115771Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6115853Z               "line": 82
2026-06-21T03:56:28.6115935Z             },
2026-06-21T03:56:28.6116016Z             {
2026-06-21T03:56:28.6116143Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6116233Z               "line": 100
2026-06-21T03:56:28.6116310Z             },
2026-06-21T03:56:28.6116401Z             {
2026-06-21T03:56:28.6116534Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6116615Z               "line": 110
2026-06-21T03:56:28.6116696Z             },
2026-06-21T03:56:28.6116777Z             {
2026-06-21T03:56:28.6116912Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T03:56:28.6117073Z               "line": 125
2026-06-21T03:56:28.6117148Z             },
2026-06-21T03:56:28.6117297Z             {
2026-06-21T03:56:28.6117425Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6117507Z               "line": 1044
2026-06-21T03:56:28.6117588Z             },
2026-06-21T03:56:28.6117669Z             {
2026-06-21T03:56:28.6117797Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6117880Z               "line": 1110
2026-06-21T03:56:28.6117960Z             },
2026-06-21T03:56:28.6118045Z             {
2026-06-21T03:56:28.6118170Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6118246Z               "line": 1357
2026-06-21T03:56:28.6118317Z             }
2026-06-21T03:56:28.6118402Z           ]
2026-06-21T03:56:28.6118478Z         }
2026-06-21T03:56:28.6118559Z       }
2026-06-21T03:56:28.6118629Z     },
2026-06-21T03:56:28.6118709Z     {
2026-06-21T03:56:28.6118805Z       "id": "REQ-PAIR-6",
2026-06-21T03:56:28.6119144Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T03:56:28.6119244Z       "requiredStages": [
2026-06-21T03:56:28.6119325Z         "impl",
2026-06-21T03:56:28.6119405Z         "unit"
2026-06-21T03:56:28.6119473Z       ],
2026-06-21T03:56:28.6119559Z       "stages": {
2026-06-21T03:56:28.6119634Z         "doc": {
2026-06-21T03:56:28.6119725Z           "complete": false,
2026-06-21T03:56:28.6119816Z           "evidence": []
2026-06-21T03:56:28.6119897Z         },
2026-06-21T03:56:28.6119982Z         "impl": {
2026-06-21T03:56:28.6120068Z           "complete": true,
2026-06-21T03:56:28.6120160Z           "evidence": [
2026-06-21T03:56:28.6120235Z             {
2026-06-21T03:56:28.6120340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6120422Z               "line": 3328
2026-06-21T03:56:28.6120498Z             },
2026-06-21T03:56:28.6120578Z             {
2026-06-21T03:56:28.6120684Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6120761Z               "line": 3709
2026-06-21T03:56:28.6120851Z             },
2026-06-21T03:56:28.6120927Z             {
2026-06-21T03:56:28.6121028Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.6121109Z               "line": 18
2026-06-21T03:56:28.6121189Z             },
2026-06-21T03:56:28.6121264Z             {
2026-06-21T03:56:28.6121369Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.6121450Z               "line": 49
2026-06-21T03:56:28.6121525Z             },
2026-06-21T03:56:28.6121605Z             {
2026-06-21T03:56:28.6121710Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.6121787Z               "line": 318
2026-06-21T03:56:28.6121868Z             }
2026-06-21T03:56:28.6121948Z           ]
2026-06-21T03:56:28.6122025Z         },
2026-06-21T03:56:28.6122101Z         "int": {
2026-06-21T03:56:28.6122183Z           "complete": false,
2026-06-21T03:56:28.6122272Z           "evidence": []
2026-06-21T03:56:28.6122355Z         },
2026-06-21T03:56:28.6122430Z         "unit": {
2026-06-21T03:56:28.6122516Z           "complete": true,
2026-06-21T03:56:28.6122597Z           "evidence": [
2026-06-21T03:56:28.6122684Z             {
2026-06-21T03:56:28.6122778Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6122864Z               "line": 10935
2026-06-21T03:56:28.6122940Z             },
2026-06-21T03:56:28.6123013Z             {
2026-06-21T03:56:28.6123107Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6123178Z               "line": 10952
2026-06-21T03:56:28.6123255Z             },
2026-06-21T03:56:28.6123342Z             {
2026-06-21T03:56:28.6123445Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.6123536Z               "line": 383
2026-06-21T03:56:28.6123618Z             },
2026-06-21T03:56:28.6123699Z             {
2026-06-21T03:56:28.6123807Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T03:56:28.6123998Z               "line": 392
2026-06-21T03:56:28.6124086Z             }
2026-06-21T03:56:28.6124262Z           ]
2026-06-21T03:56:28.6124344Z         }
2026-06-21T03:56:28.6124424Z       }
2026-06-21T03:56:28.6124505Z     },
2026-06-21T03:56:28.6124582Z     {
2026-06-21T03:56:28.6124673Z       "id": "REQ-PAIR-7",
2026-06-21T03:56:28.6124830Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T03:56:28.6124926Z       "requiredStages": [],
2026-06-21T03:56:28.6125002Z       "stages": {
2026-06-21T03:56:28.6125082Z         "doc": {
2026-06-21T03:56:28.6125163Z           "complete": false,
2026-06-21T03:56:28.6125246Z           "evidence": []
2026-06-21T03:56:28.6125330Z         },
2026-06-21T03:56:28.6125407Z         "impl": {
2026-06-21T03:56:28.6125488Z           "complete": false,
2026-06-21T03:56:28.6125580Z           "evidence": []
2026-06-21T03:56:28.6125650Z         },
2026-06-21T03:56:28.6125731Z         "int": {
2026-06-21T03:56:28.6125827Z           "complete": false,
2026-06-21T03:56:28.6125913Z           "evidence": []
2026-06-21T03:56:28.6125998Z         },
2026-06-21T03:56:28.6126089Z         "unit": {
2026-06-21T03:56:28.6126180Z           "complete": false,
2026-06-21T03:56:28.6126261Z           "evidence": []
2026-06-21T03:56:28.6126336Z         }
2026-06-21T03:56:28.6126418Z       }
2026-06-21T03:56:28.6126500Z     },
2026-06-21T03:56:28.6126585Z     {
2026-06-21T03:56:28.6126670Z       "id": "REQ-PAIR-8",
2026-06-21T03:56:28.6128019Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T03:56:28.6128106Z       "requiredStages": [
2026-06-21T03:56:28.6128191Z         "impl",
2026-06-21T03:56:28.6128277Z         "unit"
2026-06-21T03:56:28.6128357Z       ],
2026-06-21T03:56:28.6128449Z       "stages": {
2026-06-21T03:56:28.6128534Z         "doc": {
2026-06-21T03:56:28.6128610Z           "complete": false,
2026-06-21T03:56:28.6128696Z           "evidence": []
2026-06-21T03:56:28.6128778Z         },
2026-06-21T03:56:28.6128862Z         "impl": {
2026-06-21T03:56:28.6129028Z           "complete": true,
2026-06-21T03:56:28.6129109Z           "evidence": [
2026-06-21T03:56:28.6129194Z             {
2026-06-21T03:56:28.6129317Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6129399Z               "line": 577
2026-06-21T03:56:28.6129475Z             },
2026-06-21T03:56:28.6129561Z             {
2026-06-21T03:56:28.6129684Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6129771Z               "line": 22
2026-06-21T03:56:28.6129851Z             },
2026-06-21T03:56:28.6129932Z             {
2026-06-21T03:56:28.6130052Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6130142Z               "line": 76
2026-06-21T03:56:28.6130233Z             },
2026-06-21T03:56:28.6130309Z             {
2026-06-21T03:56:28.6130424Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6130509Z               "line": 127
2026-06-21T03:56:28.6130590Z             }
2026-06-21T03:56:28.6130663Z           ]
2026-06-21T03:56:28.6130748Z         },
2026-06-21T03:56:28.6130829Z         "int": {
2026-06-21T03:56:28.6130905Z           "complete": false,
2026-06-21T03:56:28.6130997Z           "evidence": []
2026-06-21T03:56:28.6131072Z         },
2026-06-21T03:56:28.6131153Z         "unit": {
2026-06-21T03:56:28.6131234Z           "complete": true,
2026-06-21T03:56:28.6131321Z           "evidence": [
2026-06-21T03:56:28.6131401Z             {
2026-06-21T03:56:28.6131516Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6131707Z               "line": 183
2026-06-21T03:56:28.6131787Z             },
2026-06-21T03:56:28.6131867Z             {
2026-06-21T03:56:28.6132080Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6132165Z               "line": 195
2026-06-21T03:56:28.6132247Z             },
2026-06-21T03:56:28.6132324Z             {
2026-06-21T03:56:28.6132442Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6132528Z               "line": 211
2026-06-21T03:56:28.6132605Z             },
2026-06-21T03:56:28.6132685Z             {
2026-06-21T03:56:28.6132789Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T03:56:28.6132876Z               "line": 227
2026-06-21T03:56:28.6132948Z             }
2026-06-21T03:56:28.6133029Z           ]
2026-06-21T03:56:28.6133104Z         }
2026-06-21T03:56:28.6133190Z       }
2026-06-21T03:56:28.6133272Z     },
2026-06-21T03:56:28.6133347Z     {
2026-06-21T03:56:28.6133433Z       "id": "REQ-PICKER-1",
2026-06-21T03:56:28.6136959Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T03:56:28.6137089Z       "requiredStages": [
2026-06-21T03:56:28.6137169Z         "impl",
2026-06-21T03:56:28.6137258Z         "unit"
2026-06-21T03:56:28.6137334Z       ],
2026-06-21T03:56:28.6137421Z       "stages": {
2026-06-21T03:56:28.6137502Z         "doc": {
2026-06-21T03:56:28.6137582Z           "complete": false,
2026-06-21T03:56:28.6137668Z           "evidence": []
2026-06-21T03:56:28.6137745Z         },
2026-06-21T03:56:28.6137831Z         "impl": {
2026-06-21T03:56:28.6137916Z           "complete": true,
2026-06-21T03:56:28.6137998Z           "evidence": [
2026-06-21T03:56:28.6138079Z             {
2026-06-21T03:56:28.6138197Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6138273Z               "line": 248
2026-06-21T03:56:28.6138351Z             },
2026-06-21T03:56:28.6138436Z             {
2026-06-21T03:56:28.6138564Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6138685Z               "line": 263
2026-06-21T03:56:28.6138760Z             }
2026-06-21T03:56:28.6138841Z           ]
2026-06-21T03:56:28.6138922Z         },
2026-06-21T03:56:28.6139071Z         "int": {
2026-06-21T03:56:28.6139165Z           "complete": false,
2026-06-21T03:56:28.6139242Z           "evidence": []
2026-06-21T03:56:28.6139325Z         },
2026-06-21T03:56:28.6139404Z         "unit": {
2026-06-21T03:56:28.6139494Z           "complete": true,
2026-06-21T03:56:28.6139579Z           "evidence": [
2026-06-21T03:56:28.6139661Z             {
2026-06-21T03:56:28.6139773Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6139853Z               "line": 476
2026-06-21T03:56:28.6139935Z             },
2026-06-21T03:56:28.6140017Z             {
2026-06-21T03:56:28.6140126Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6140312Z               "line": 753
2026-06-21T03:56:28.6140402Z             },
2026-06-21T03:56:28.6140483Z             {
2026-06-21T03:56:28.6140684Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6140774Z               "line": 886
2026-06-21T03:56:28.6140855Z             },
2026-06-21T03:56:28.6140932Z             {
2026-06-21T03:56:28.6141041Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6141127Z               "line": 455
2026-06-21T03:56:28.6141208Z             }
2026-06-21T03:56:28.6141280Z           ]
2026-06-21T03:56:28.6141365Z         }
2026-06-21T03:56:28.6141437Z       }
2026-06-21T03:56:28.6141523Z     },
2026-06-21T03:56:28.6141600Z     {
2026-06-21T03:56:28.6141694Z       "id": "REQ-PICKER-2",
2026-06-21T03:56:28.6143618Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T03:56:28.6143856Z       "requiredStages": [
2026-06-21T03:56:28.6143932Z         "impl",
2026-06-21T03:56:28.6144012Z         "unit"
2026-06-21T03:56:28.6144095Z       ],
2026-06-21T03:56:28.6144176Z       "stages": {
2026-06-21T03:56:28.6144251Z         "doc": {
2026-06-21T03:56:28.6144332Z           "complete": false,
2026-06-21T03:56:28.6144420Z           "evidence": []
2026-06-21T03:56:28.6144491Z         },
2026-06-21T03:56:28.6144580Z         "impl": {
2026-06-21T03:56:28.6144661Z           "complete": true,
2026-06-21T03:56:28.6144744Z           "evidence": [
2026-06-21T03:56:28.6144825Z             {
2026-06-21T03:56:28.6144961Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6145051Z               "line": 183
2026-06-21T03:56:28.6145142Z             },
2026-06-21T03:56:28.6145221Z             {
2026-06-21T03:56:28.6145330Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6145421Z               "line": 296
2026-06-21T03:56:28.6145494Z             }
2026-06-21T03:56:28.6145578Z           ]
2026-06-21T03:56:28.6145659Z         },
2026-06-21T03:56:28.6145737Z         "int": {
2026-06-21T03:56:28.6145822Z           "complete": false,
2026-06-21T03:56:28.6145902Z           "evidence": []
2026-06-21T03:56:28.6145978Z         },
2026-06-21T03:56:28.6146051Z         "unit": {
2026-06-21T03:56:28.6146141Z           "complete": true,
2026-06-21T03:56:28.6146231Z           "evidence": [
2026-06-21T03:56:28.6146313Z             {
2026-06-21T03:56:28.6146437Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6146523Z               "line": 655
2026-06-21T03:56:28.6146604Z             }
2026-06-21T03:56:28.6146686Z           ]
2026-06-21T03:56:28.6146775Z         }
2026-06-21T03:56:28.6146865Z       }
2026-06-21T03:56:28.6146942Z     },
2026-06-21T03:56:28.6147029Z     {
2026-06-21T03:56:28.6147118Z       "id": "REQ-PICKER-3",
2026-06-21T03:56:28.6149626Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T03:56:28.6149936Z       "requiredStages": [
2026-06-21T03:56:28.6150021Z         "impl",
2026-06-21T03:56:28.6150096Z         "unit"
2026-06-21T03:56:28.6150172Z       ],
2026-06-21T03:56:28.6150258Z       "stages": {
2026-06-21T03:56:28.6150342Z         "doc": {
2026-06-21T03:56:28.6150437Z           "complete": false,
2026-06-21T03:56:28.6150519Z           "evidence": []
2026-06-21T03:56:28.6150601Z         },
2026-06-21T03:56:28.6150686Z         "impl": {
2026-06-21T03:56:28.6150786Z           "complete": true,
2026-06-21T03:56:28.6150867Z           "evidence": [
2026-06-21T03:56:28.6150953Z             {
2026-06-21T03:56:28.6151066Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6151159Z               "line": 124
2026-06-21T03:56:28.6151244Z             }
2026-06-21T03:56:28.6151324Z           ]
2026-06-21T03:56:28.6151410Z         },
2026-06-21T03:56:28.6151502Z         "int": {
2026-06-21T03:56:28.6151597Z           "complete": false,
2026-06-21T03:56:28.6151691Z           "evidence": []
2026-06-21T03:56:28.6151773Z         },
2026-06-21T03:56:28.6151854Z         "unit": {
2026-06-21T03:56:28.6151944Z           "complete": true,
2026-06-21T03:56:28.6152025Z           "evidence": [
2026-06-21T03:56:28.6152108Z             {
2026-06-21T03:56:28.6152211Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6152293Z               "line": 369
2026-06-21T03:56:28.6152384Z             }
2026-06-21T03:56:28.6152461Z           ]
2026-06-21T03:56:28.6152540Z         }
2026-06-21T03:56:28.6152626Z       }
2026-06-21T03:56:28.6152699Z     },
2026-06-21T03:56:28.6152776Z     {
2026-06-21T03:56:28.6152864Z       "id": "REQ-PICKER-4",
2026-06-21T03:56:28.6154783Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T03:56:28.6154907Z       "requiredStages": [
2026-06-21T03:56:28.6154994Z         "impl",
2026-06-21T03:56:28.6155079Z         "unit"
2026-06-21T03:56:28.6155164Z       ],
2026-06-21T03:56:28.6155256Z       "stages": {
2026-06-21T03:56:28.6155337Z         "doc": {
2026-06-21T03:56:28.6155431Z           "complete": false,
2026-06-21T03:56:28.6155511Z           "evidence": []
2026-06-21T03:56:28.6155592Z         },
2026-06-21T03:56:28.6155678Z         "impl": {
2026-06-21T03:56:28.6155767Z           "complete": true,
2026-06-21T03:56:28.6155871Z           "evidence": [
2026-06-21T03:56:28.6155958Z             {
2026-06-21T03:56:28.6156082Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6156181Z               "line": 353
2026-06-21T03:56:28.6156263Z             },
2026-06-21T03:56:28.6156344Z             {
2026-06-21T03:56:28.6156458Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6156553Z               "line": 105
2026-06-21T03:56:28.6156640Z             }
2026-06-21T03:56:28.6156716Z           ]
2026-06-21T03:56:28.6156805Z         },
2026-06-21T03:56:28.6156888Z         "int": {
2026-06-21T03:56:28.6156983Z           "complete": false,
2026-06-21T03:56:28.6157064Z           "evidence": []
2026-06-21T03:56:28.6157154Z         },
2026-06-21T03:56:28.6157236Z         "unit": {
2026-06-21T03:56:28.6157326Z           "complete": true,
2026-06-21T03:56:28.6157407Z           "evidence": [
2026-06-21T03:56:28.6157488Z             {
2026-06-21T03:56:28.6157702Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6157783Z               "line": 1246
2026-06-21T03:56:28.6157965Z             },
2026-06-21T03:56:28.6158051Z             {
2026-06-21T03:56:28.6158162Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6158243Z               "line": 427
2026-06-21T03:56:28.6158327Z             }
2026-06-21T03:56:28.6158412Z           ]
2026-06-21T03:56:28.6158498Z         }
2026-06-21T03:56:28.6158579Z       }
2026-06-21T03:56:28.6158665Z     },
2026-06-21T03:56:28.6158736Z     {
2026-06-21T03:56:28.6158836Z       "id": "REQ-PICKER-5",
2026-06-21T03:56:28.6161932Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T03:56:28.6162057Z       "requiredStages": [
2026-06-21T03:56:28.6162142Z         "impl",
2026-06-21T03:56:28.6162232Z         "unit"
2026-06-21T03:56:28.6162309Z       ],
2026-06-21T03:56:28.6162400Z       "stages": {
2026-06-21T03:56:28.6162481Z         "doc": {
2026-06-21T03:56:28.6162571Z           "complete": false,
2026-06-21T03:56:28.6162663Z           "evidence": []
2026-06-21T03:56:28.6162748Z         },
2026-06-21T03:56:28.6162838Z         "impl": {
2026-06-21T03:56:28.6162919Z           "complete": true,
2026-06-21T03:56:28.6163012Z           "evidence": [
2026-06-21T03:56:28.6163095Z             {
2026-06-21T03:56:28.6163201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6163287Z               "line": 1802
2026-06-21T03:56:28.6163364Z             }
2026-06-21T03:56:28.6163453Z           ]
2026-06-21T03:56:28.6163528Z         },
2026-06-21T03:56:28.6163614Z         "int": {
2026-06-21T03:56:28.6163709Z           "complete": false,
2026-06-21T03:56:28.6163798Z           "evidence": []
2026-06-21T03:56:28.6163883Z         },
2026-06-21T03:56:28.6163970Z         "unit": {
2026-06-21T03:56:28.6164061Z           "complete": true,
2026-06-21T03:56:28.6164151Z           "evidence": [
2026-06-21T03:56:28.6164237Z             {
2026-06-21T03:56:28.6164338Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6164437Z               "line": 7526
2026-06-21T03:56:28.6164522Z             }
2026-06-21T03:56:28.6164619Z           ]
2026-06-21T03:56:28.6164705Z         }
2026-06-21T03:56:28.6164775Z       }
2026-06-21T03:56:28.6164862Z     },
2026-06-21T03:56:28.6164939Z     {
2026-06-21T03:56:28.6165057Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T03:56:28.6166431Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T03:56:28.6166532Z       "requiredStages": [],
2026-06-21T03:56:28.6166623Z       "stages": {
2026-06-21T03:56:28.6166708Z         "doc": {
2026-06-21T03:56:28.6166919Z           "complete": false,
2026-06-21T03:56:28.6167008Z           "evidence": []
2026-06-21T03:56:28.6167195Z         },
2026-06-21T03:56:28.6167285Z         "impl": {
2026-06-21T03:56:28.6167370Z           "complete": false,
2026-06-21T03:56:28.6167463Z           "evidence": []
2026-06-21T03:56:28.6167533Z         },
2026-06-21T03:56:28.6167619Z         "int": {
2026-06-21T03:56:28.6167709Z           "complete": false,
2026-06-21T03:56:28.6167801Z           "evidence": []
2026-06-21T03:56:28.6167886Z         },
2026-06-21T03:56:28.6167967Z         "unit": {
2026-06-21T03:56:28.6168058Z           "complete": false,
2026-06-21T03:56:28.6168144Z           "evidence": []
2026-06-21T03:56:28.6168229Z         }
2026-06-21T03:56:28.6168310Z       }
2026-06-21T03:56:28.6168397Z     },
2026-06-21T03:56:28.6168483Z     {
2026-06-21T03:56:28.6168586Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T03:56:28.6169765Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T03:56:28.6169874Z       "requiredStages": [
2026-06-21T03:56:28.6169964Z         "impl",
2026-06-21T03:56:28.6170046Z         "unit"
2026-06-21T03:56:28.6170131Z       ],
2026-06-21T03:56:28.6170221Z       "stages": {
2026-06-21T03:56:28.6170298Z         "doc": {
2026-06-21T03:56:28.6170399Z           "complete": false,
2026-06-21T03:56:28.6170474Z           "evidence": []
2026-06-21T03:56:28.6170555Z         },
2026-06-21T03:56:28.6170642Z         "impl": {
2026-06-21T03:56:28.6170728Z           "complete": true,
2026-06-21T03:56:28.6170807Z           "evidence": [
2026-06-21T03:56:28.6170888Z             {
2026-06-21T03:56:28.6171000Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6171094Z               "line": 275
2026-06-21T03:56:28.6171174Z             }
2026-06-21T03:56:28.6171264Z           ]
2026-06-21T03:56:28.6171346Z         },
2026-06-21T03:56:28.6171435Z         "int": {
2026-06-21T03:56:28.6171515Z           "complete": false,
2026-06-21T03:56:28.6171606Z           "evidence": []
2026-06-21T03:56:28.6171692Z         },
2026-06-21T03:56:28.6171782Z         "unit": {
2026-06-21T03:56:28.6171877Z           "complete": true,
2026-06-21T03:56:28.6171963Z           "evidence": [
2026-06-21T03:56:28.6172035Z             {
2026-06-21T03:56:28.6172144Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6172235Z               "line": 400
2026-06-21T03:56:28.6172308Z             }
2026-06-21T03:56:28.6172393Z           ]
2026-06-21T03:56:28.6172482Z         }
2026-06-21T03:56:28.6172555Z       }
2026-06-21T03:56:28.6172646Z     },
2026-06-21T03:56:28.6172727Z     {
2026-06-21T03:56:28.6172836Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T03:56:28.6174382Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T03:56:28.6174492Z       "requiredStages": [
2026-06-21T03:56:28.6174573Z         "impl",
2026-06-21T03:56:28.6174658Z         "unit"
2026-06-21T03:56:28.6174749Z       ],
2026-06-21T03:56:28.6174836Z       "stages": {
2026-06-21T03:56:28.6174916Z         "doc": {
2026-06-21T03:56:28.6175001Z           "complete": false,
2026-06-21T03:56:28.6175082Z           "evidence": []
2026-06-21T03:56:28.6175165Z         },
2026-06-21T03:56:28.6175359Z         "impl": {
2026-06-21T03:56:28.6175460Z           "complete": true,
2026-06-21T03:56:28.6175546Z           "evidence": [
2026-06-21T03:56:28.6175726Z             {
2026-06-21T03:56:28.6175851Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6175941Z               "line": 654
2026-06-21T03:56:28.6176032Z             }
2026-06-21T03:56:28.6176114Z           ]
2026-06-21T03:56:28.6176204Z         },
2026-06-21T03:56:28.6176280Z         "int": {
2026-06-21T03:56:28.6176371Z           "complete": false,
2026-06-21T03:56:28.6176467Z           "evidence": []
2026-06-21T03:56:28.6176551Z         },
2026-06-21T03:56:28.6176641Z         "unit": {
2026-06-21T03:56:28.6176727Z           "complete": true,
2026-06-21T03:56:28.6176822Z           "evidence": [
2026-06-21T03:56:28.6176906Z             {
2026-06-21T03:56:28.6177020Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6177121Z               "line": 1078
2026-06-21T03:56:28.6177202Z             },
2026-06-21T03:56:28.6177301Z             {
2026-06-21T03:56:28.6177412Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6177512Z               "line": 1092
2026-06-21T03:56:28.6177597Z             }
2026-06-21T03:56:28.6177678Z           ]
2026-06-21T03:56:28.6177760Z         }
2026-06-21T03:56:28.6177845Z       }
2026-06-21T03:56:28.6177931Z     },
2026-06-21T03:56:28.6178013Z     {
2026-06-21T03:56:28.6178117Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T03:56:28.6179776Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T03:56:28.6179895Z       "requiredStages": [],
2026-06-21T03:56:28.6179981Z       "stages": {
2026-06-21T03:56:28.6180062Z         "doc": {
2026-06-21T03:56:28.6180156Z           "complete": false,
2026-06-21T03:56:28.6180238Z           "evidence": []
2026-06-21T03:56:28.6180325Z         },
2026-06-21T03:56:28.6180406Z         "impl": {
2026-06-21T03:56:28.6180485Z           "complete": false,
2026-06-21T03:56:28.6180572Z           "evidence": []
2026-06-21T03:56:28.6180653Z         },
2026-06-21T03:56:28.6180739Z         "int": {
2026-06-21T03:56:28.6180829Z           "complete": false,
2026-06-21T03:56:28.6180907Z           "evidence": []
2026-06-21T03:56:28.6180987Z         },
2026-06-21T03:56:28.6181073Z         "unit": {
2026-06-21T03:56:28.6181163Z           "complete": false,
2026-06-21T03:56:28.6181245Z           "evidence": []
2026-06-21T03:56:28.6181335Z         }
2026-06-21T03:56:28.6181421Z       }
2026-06-21T03:56:28.6181502Z     },
2026-06-21T03:56:28.6181589Z     {
2026-06-21T03:56:28.6181683Z       "id": "REQ-PRES-1",
2026-06-21T03:56:28.6183000Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T03:56:28.6183110Z       "requiredStages": [
2026-06-21T03:56:28.6183197Z         "impl",
2026-06-21T03:56:28.6183277Z         "unit",
2026-06-21T03:56:28.6183357Z         "int"
2026-06-21T03:56:28.6183434Z       ],
2026-06-21T03:56:28.6183516Z       "stages": {
2026-06-21T03:56:28.6183606Z         "doc": {
2026-06-21T03:56:28.6183691Z           "complete": true,
2026-06-21T03:56:28.6183778Z           "evidence": [
2026-06-21T03:56:28.6183964Z             {
2026-06-21T03:56:28.6184069Z               "path": "docs/DEFERRED.md",
2026-06-21T03:56:28.6184165Z               "line": 11
2026-06-21T03:56:28.6184335Z             }
2026-06-21T03:56:28.6184427Z           ]
2026-06-21T03:56:28.6184503Z         },
2026-06-21T03:56:28.6184587Z         "impl": {
2026-06-21T03:56:28.6184672Z           "complete": true,
2026-06-21T03:56:28.6184758Z           "evidence": [
2026-06-21T03:56:28.6184844Z             {
2026-06-21T03:56:28.6184966Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6185057Z               "line": 515
2026-06-21T03:56:28.6185143Z             },
2026-06-21T03:56:28.6185228Z             {
2026-06-21T03:56:28.6185342Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6185430Z               "line": 567
2026-06-21T03:56:28.6185520Z             },
2026-06-21T03:56:28.6185600Z             {
2026-06-21T03:56:28.6185730Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6189697Z               "line": 188
2026-06-21T03:56:28.6189803Z             },
2026-06-21T03:56:28.6189885Z             {
2026-06-21T03:56:28.6190021Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6190106Z               "line": 214
2026-06-21T03:56:28.6190193Z             },
2026-06-21T03:56:28.6190274Z             {
2026-06-21T03:56:28.6190406Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6190488Z               "line": 28
2026-06-21T03:56:28.6190570Z             },
2026-06-21T03:56:28.6190655Z             {
2026-06-21T03:56:28.6190784Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6190875Z               "line": 105
2026-06-21T03:56:28.6190956Z             },
2026-06-21T03:56:28.6191036Z             {
2026-06-21T03:56:28.6191152Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6191247Z               "line": 161
2026-06-21T03:56:28.6191327Z             },
2026-06-21T03:56:28.6191418Z             {
2026-06-21T03:56:28.6191543Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6191623Z               "line": 180
2026-06-21T03:56:28.6191708Z             },
2026-06-21T03:56:28.6191791Z             {
2026-06-21T03:56:28.6191923Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6192004Z               "line": 421
2026-06-21T03:56:28.6192086Z             },
2026-06-21T03:56:28.6192177Z             {
2026-06-21T03:56:28.6192294Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6192380Z               "line": 289
2026-06-21T03:56:28.6192456Z             },
2026-06-21T03:56:28.6192546Z             {
2026-06-21T03:56:28.6192663Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6192755Z               "line": 336
2026-06-21T03:56:28.6192836Z             },
2026-06-21T03:56:28.6192917Z             {
2026-06-21T03:56:28.6193021Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6193108Z               "line": 362
2026-06-21T03:56:28.6193194Z             },
2026-06-21T03:56:28.6193283Z             {
2026-06-21T03:56:28.6193399Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6193484Z               "line": 100
2026-06-21T03:56:28.6193570Z             }
2026-06-21T03:56:28.6193646Z           ]
2026-06-21T03:56:28.6193728Z         },
2026-06-21T03:56:28.6193809Z         "int": {
2026-06-21T03:56:28.6193899Z           "complete": true,
2026-06-21T03:56:28.6193985Z           "evidence": [
2026-06-21T03:56:28.6194071Z             {
2026-06-21T03:56:28.6194195Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6194280Z               "line": 563
2026-06-21T03:56:28.6194362Z             },
2026-06-21T03:56:28.6194447Z             {
2026-06-21T03:56:28.6194566Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6194649Z               "line": 747
2026-06-21T03:56:28.6194900Z             },
2026-06-21T03:56:28.6194978Z             {
2026-06-21T03:56:28.6195110Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6195318Z               "line": 1165
2026-06-21T03:56:28.6195408Z             }
2026-06-21T03:56:28.6195493Z           ]
2026-06-21T03:56:28.6195583Z         },
2026-06-21T03:56:28.6195680Z         "unit": {
2026-06-21T03:56:28.6195765Z           "complete": true,
2026-06-21T03:56:28.6195864Z           "evidence": [
2026-06-21T03:56:28.6195946Z             {
2026-06-21T03:56:28.6196066Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6196155Z               "line": 674
2026-06-21T03:56:28.6196237Z             },
2026-06-21T03:56:28.6196324Z             {
2026-06-21T03:56:28.6196437Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6196537Z               "line": 238
2026-06-21T03:56:28.6196619Z             },
2026-06-21T03:56:28.6196708Z             {
2026-06-21T03:56:28.6196828Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6196924Z               "line": 269
2026-06-21T03:56:28.6197081Z             },
2026-06-21T03:56:28.6197167Z             {
2026-06-21T03:56:28.6197301Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6197395Z               "line": 305
2026-06-21T03:56:28.6197482Z             },
2026-06-21T03:56:28.6197583Z             {
2026-06-21T03:56:28.6197695Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T03:56:28.6197785Z               "line": 336
2026-06-21T03:56:28.6197857Z             },
2026-06-21T03:56:28.6197938Z             {
2026-06-21T03:56:28.6198069Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6198155Z               "line": 1217
2026-06-21T03:56:28.6198232Z             },
2026-06-21T03:56:28.6198313Z             {
2026-06-21T03:56:28.6198426Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6198513Z               "line": 1163
2026-06-21T03:56:28.6198603Z             }
2026-06-21T03:56:28.6198684Z           ]
2026-06-21T03:56:28.6198765Z         }
2026-06-21T03:56:28.6198852Z       }
2026-06-21T03:56:28.6198928Z     },
2026-06-21T03:56:28.6199089Z     {
2026-06-21T03:56:28.6199181Z       "id": "REQ-RC-1",
2026-06-21T03:56:28.6201248Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T03:56:28.6201354Z       "requiredStages": [
2026-06-21T03:56:28.6201435Z         "impl",
2026-06-21T03:56:28.6201516Z         "unit",
2026-06-21T03:56:28.6201606Z         "int"
2026-06-21T03:56:28.6201707Z       ],
2026-06-21T03:56:28.6201792Z       "stages": {
2026-06-21T03:56:28.6201859Z         "doc": {
2026-06-21T03:56:28.6201944Z           "complete": false,
2026-06-21T03:56:28.6202032Z           "evidence": []
2026-06-21T03:56:28.6202121Z         },
2026-06-21T03:56:28.6202202Z         "impl": {
2026-06-21T03:56:28.6202293Z           "complete": true,
2026-06-21T03:56:28.6202394Z           "evidence": [
2026-06-21T03:56:28.6202474Z             {
2026-06-21T03:56:28.6202588Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.6202671Z               "line": 944
2026-06-21T03:56:28.6202751Z             },
2026-06-21T03:56:28.6202831Z             {
2026-06-21T03:56:28.6202954Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6203050Z               "line": 1926
2026-06-21T03:56:28.6203243Z             },
2026-06-21T03:56:28.6203329Z             {
2026-06-21T03:56:28.6203548Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6203630Z               "line": 967
2026-06-21T03:56:28.6203702Z             },
2026-06-21T03:56:28.6203787Z             {
2026-06-21T03:56:28.6203906Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6203992Z               "line": 1001
2026-06-21T03:56:28.6204073Z             },
2026-06-21T03:56:28.6204158Z             {
2026-06-21T03:56:28.6204260Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6204345Z               "line": 22
2026-06-21T03:56:28.6204430Z             },
2026-06-21T03:56:28.6204516Z             {
2026-06-21T03:56:28.6204612Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6204702Z               "line": 701
2026-06-21T03:56:28.6204774Z             }
2026-06-21T03:56:28.6204855Z           ]
2026-06-21T03:56:28.6204937Z         },
2026-06-21T03:56:28.6205031Z         "int": {
2026-06-21T03:56:28.6205122Z           "complete": true,
2026-06-21T03:56:28.6205209Z           "evidence": [
2026-06-21T03:56:28.6205294Z             {
2026-06-21T03:56:28.6205408Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6205495Z               "line": 258
2026-06-21T03:56:28.6205576Z             },
2026-06-21T03:56:28.6205665Z             {
2026-06-21T03:56:28.6205778Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6205860Z               "line": 285
2026-06-21T03:56:28.6205950Z             },
2026-06-21T03:56:28.6206030Z             {
2026-06-21T03:56:28.6206148Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6206240Z               "line": 413
2026-06-21T03:56:28.6206321Z             }
2026-06-21T03:56:28.6206410Z           ]
2026-06-21T03:56:28.6206492Z         },
2026-06-21T03:56:28.6206583Z         "unit": {
2026-06-21T03:56:28.6206673Z           "complete": true,
2026-06-21T03:56:28.6206768Z           "evidence": [
2026-06-21T03:56:28.6206850Z             {
2026-06-21T03:56:28.6206983Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6207078Z               "line": 1327
2026-06-21T03:56:28.6207155Z             },
2026-06-21T03:56:28.6207245Z             {
2026-06-21T03:56:28.6207340Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6207431Z               "line": 1133
2026-06-21T03:56:28.6207522Z             },
2026-06-21T03:56:28.6207607Z             {
2026-06-21T03:56:28.6207712Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6207799Z               "line": 1162
2026-06-21T03:56:28.6207880Z             },
2026-06-21T03:56:28.6207960Z             {
2026-06-21T03:56:28.6208066Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6208152Z               "line": 1175
2026-06-21T03:56:28.6208237Z             }
2026-06-21T03:56:28.6208322Z           ]
2026-06-21T03:56:28.6208403Z         }
2026-06-21T03:56:28.6208503Z       }
2026-06-21T03:56:28.6208572Z     },
2026-06-21T03:56:28.6208658Z     {
2026-06-21T03:56:28.6208768Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T03:56:28.6214595Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T03:56:28.6214924Z       "requiredStages": [
2026-06-21T03:56:28.6215005Z         "doc",
2026-06-21T03:56:28.6215091Z         "impl",
2026-06-21T03:56:28.6215177Z         "unit"
2026-06-21T03:56:28.6215258Z       ],
2026-06-21T03:56:28.6215339Z       "stages": {
2026-06-21T03:56:28.6215420Z         "doc": {
2026-06-21T03:56:28.6215506Z           "complete": true,
2026-06-21T03:56:28.6215601Z           "evidence": [
2026-06-21T03:56:28.6215682Z             {
2026-06-21T03:56:28.6215783Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6215868Z               "line": 345
2026-06-21T03:56:28.6215953Z             },
2026-06-21T03:56:28.6216035Z             {
2026-06-21T03:56:28.6216145Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.6216230Z               "line": 440
2026-06-21T03:56:28.6216310Z             }
2026-06-21T03:56:28.6216396Z           ]
2026-06-21T03:56:28.6216482Z         },
2026-06-21T03:56:28.6216566Z         "impl": {
2026-06-21T03:56:28.6216646Z           "complete": true,
2026-06-21T03:56:28.6216752Z           "evidence": [
2026-06-21T03:56:28.6216842Z             {
2026-06-21T03:56:28.6216942Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6217032Z               "line": 226
2026-06-21T03:56:28.6217115Z             },
2026-06-21T03:56:28.6217205Z             {
2026-06-21T03:56:28.6217304Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6217396Z               "line": 285
2026-06-21T03:56:28.6217477Z             },
2026-06-21T03:56:28.6217562Z             {
2026-06-21T03:56:28.6217662Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6217749Z               "line": 300
2026-06-21T03:56:28.6217834Z             },
2026-06-21T03:56:28.6217915Z             {
2026-06-21T03:56:28.6218006Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6218106Z               "line": 315
2026-06-21T03:56:28.6218186Z             },
2026-06-21T03:56:28.6218268Z             {
2026-06-21T03:56:28.6218364Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6218463Z               "line": 364
2026-06-21T03:56:28.6218549Z             }
2026-06-21T03:56:28.6218631Z           ]
2026-06-21T03:56:28.6218717Z         },
2026-06-21T03:56:28.6218797Z         "int": {
2026-06-21T03:56:28.6218896Z           "complete": false,
2026-06-21T03:56:28.6219105Z           "evidence": []
2026-06-21T03:56:28.6219189Z         },
2026-06-21T03:56:28.6219265Z         "unit": {
2026-06-21T03:56:28.6219362Z           "complete": true,
2026-06-21T03:56:28.6219443Z           "evidence": [
2026-06-21T03:56:28.6219518Z             {
2026-06-21T03:56:28.6219614Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6219700Z               "line": 1190
2026-06-21T03:56:28.6219791Z             },
2026-06-21T03:56:28.6219871Z             {
2026-06-21T03:56:28.6219977Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6220176Z               "line": 1305
2026-06-21T03:56:28.6220258Z             }
2026-06-21T03:56:28.6220349Z           ]
2026-06-21T03:56:28.6220520Z         }
2026-06-21T03:56:28.6220607Z       }
2026-06-21T03:56:28.6220691Z     },
2026-06-21T03:56:28.6220777Z     {
2026-06-21T03:56:28.6220878Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T03:56:28.6225141Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T03:56:28.6225269Z       "requiredStages": [
2026-06-21T03:56:28.6225351Z         "doc",
2026-06-21T03:56:28.6225437Z         "impl",
2026-06-21T03:56:28.6225527Z         "unit"
2026-06-21T03:56:28.6225612Z       ],
2026-06-21T03:56:28.6225689Z       "stages": {
2026-06-21T03:56:28.6225784Z         "doc": {
2026-06-21T03:56:28.6225875Z           "complete": true,
2026-06-21T03:56:28.6225975Z           "evidence": [
2026-06-21T03:56:28.6226062Z             {
2026-06-21T03:56:28.6226170Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.6226256Z               "line": 461
2026-06-21T03:56:28.6226343Z             }
2026-06-21T03:56:28.6226428Z           ]
2026-06-21T03:56:28.6226509Z         },
2026-06-21T03:56:28.6226600Z         "impl": {
2026-06-21T03:56:28.6226692Z           "complete": true,
2026-06-21T03:56:28.6226776Z           "evidence": [
2026-06-21T03:56:28.6226856Z             {
2026-06-21T03:56:28.6226956Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6227042Z               "line": 421
2026-06-21T03:56:28.6227121Z             },
2026-06-21T03:56:28.6227206Z             {
2026-06-21T03:56:28.6227302Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6227389Z               "line": 437
2026-06-21T03:56:28.6227479Z             }
2026-06-21T03:56:28.6227564Z           ]
2026-06-21T03:56:28.6227646Z         },
2026-06-21T03:56:28.6227732Z         "int": {
2026-06-21T03:56:28.6227826Z           "complete": false,
2026-06-21T03:56:28.6227917Z           "evidence": []
2026-06-21T03:56:28.6227999Z         },
2026-06-21T03:56:28.6228085Z         "unit": {
2026-06-21T03:56:28.6228169Z           "complete": true,
2026-06-21T03:56:28.6228251Z           "evidence": [
2026-06-21T03:56:28.6228333Z             {
2026-06-21T03:56:28.6228437Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6228523Z               "line": 1440
2026-06-21T03:56:28.6228605Z             },
2026-06-21T03:56:28.6228680Z             {
2026-06-21T03:56:28.6228771Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6228862Z               "line": 1459
2026-06-21T03:56:28.6229070Z             },
2026-06-21T03:56:28.6229282Z             {
2026-06-21T03:56:28.6229395Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6229571Z               "line": 1471
2026-06-21T03:56:28.6229660Z             },
2026-06-21T03:56:28.6229740Z             {
2026-06-21T03:56:28.6229845Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6229932Z               "line": 1499
2026-06-21T03:56:28.6230022Z             }
2026-06-21T03:56:28.6230107Z           ]
2026-06-21T03:56:28.6230189Z         }
2026-06-21T03:56:28.6230261Z       }
2026-06-21T03:56:28.6230341Z     },
2026-06-21T03:56:28.6230426Z     {
2026-06-21T03:56:28.6230518Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T03:56:28.6235200Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T03:56:28.6235339Z       "requiredStages": [
2026-06-21T03:56:28.6235415Z         "doc",
2026-06-21T03:56:28.6235505Z         "impl",
2026-06-21T03:56:28.6235586Z         "unit"
2026-06-21T03:56:28.6235673Z       ],
2026-06-21T03:56:28.6235754Z       "stages": {
2026-06-21T03:56:28.6235839Z         "doc": {
2026-06-21T03:56:28.6235925Z           "complete": true,
2026-06-21T03:56:28.6236016Z           "evidence": [
2026-06-21T03:56:28.6236101Z             {
2026-06-21T03:56:28.6236206Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T03:56:28.6236293Z               "line": 447
2026-06-21T03:56:28.6236373Z             }
2026-06-21T03:56:28.6236454Z           ]
2026-06-21T03:56:28.6236540Z         },
2026-06-21T03:56:28.6236632Z         "impl": {
2026-06-21T03:56:28.6236725Z           "complete": true,
2026-06-21T03:56:28.6236816Z           "evidence": [
2026-06-21T03:56:28.6236923Z             {
2026-06-21T03:56:28.6237035Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6237122Z               "line": 395
2026-06-21T03:56:28.6237208Z             },
2026-06-21T03:56:28.6237294Z             {
2026-06-21T03:56:28.6237402Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6237497Z               "line": 411
2026-06-21T03:56:28.6237579Z             },
2026-06-21T03:56:28.6237662Z             {
2026-06-21T03:56:28.6237748Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6237838Z               "line": 454
2026-06-21T03:56:28.6237915Z             },
2026-06-21T03:56:28.6238005Z             {
2026-06-21T03:56:28.6238105Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6238192Z               "line": 468
2026-06-21T03:56:28.6238273Z             },
2026-06-21T03:56:28.6238438Z             {
2026-06-21T03:56:28.6238531Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6238687Z               "line": 479
2026-06-21T03:56:28.6238763Z             }
2026-06-21T03:56:28.6238855Z           ]
2026-06-21T03:56:28.6238935Z         },
2026-06-21T03:56:28.6239097Z         "int": {
2026-06-21T03:56:28.6239188Z           "complete": false,
2026-06-21T03:56:28.6239283Z           "evidence": []
2026-06-21T03:56:28.6239355Z         },
2026-06-21T03:56:28.6239446Z         "unit": {
2026-06-21T03:56:28.6239541Z           "complete": true,
2026-06-21T03:56:28.6239621Z           "evidence": [
2026-06-21T03:56:28.6239707Z             {
2026-06-21T03:56:28.6239809Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6239894Z               "line": 1381
2026-06-21T03:56:28.6239974Z             },
2026-06-21T03:56:28.6240059Z             {
2026-06-21T03:56:28.6240159Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6240248Z               "line": 1402
2026-06-21T03:56:28.6240338Z             },
2026-06-21T03:56:28.6240419Z             {
2026-06-21T03:56:28.6240520Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6240610Z               "line": 1423
2026-06-21T03:56:28.6240696Z             }
2026-06-21T03:56:28.6240787Z           ]
2026-06-21T03:56:28.6240863Z         }
2026-06-21T03:56:28.6240953Z       }
2026-06-21T03:56:28.6241030Z     },
2026-06-21T03:56:28.6241111Z     {
2026-06-21T03:56:28.6241197Z       "id": "REQ-RCVIEW-1",
2026-06-21T03:56:28.6245584Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T03:56:28.6245708Z       "requiredStages": [
2026-06-21T03:56:28.6245793Z         "doc",
2026-06-21T03:56:28.6245870Z         "impl",
2026-06-21T03:56:28.6245951Z         "unit",
2026-06-21T03:56:28.6246032Z         "int"
2026-06-21T03:56:28.6246118Z       ],
2026-06-21T03:56:28.6246200Z       "stages": {
2026-06-21T03:56:28.6246290Z         "doc": {
2026-06-21T03:56:28.6246365Z           "complete": true,
2026-06-21T03:56:28.6246461Z           "evidence": [
2026-06-21T03:56:28.6246543Z             {
2026-06-21T03:56:28.6246638Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6246728Z               "line": 342
2026-06-21T03:56:28.6246815Z             }
2026-06-21T03:56:28.6246905Z           ]
2026-06-21T03:56:28.6246986Z         },
2026-06-21T03:56:28.6247076Z         "impl": {
2026-06-21T03:56:28.6247168Z           "complete": true,
2026-06-21T03:56:28.6247267Z           "evidence": [
2026-06-21T03:56:28.6247348Z             {
2026-06-21T03:56:28.6247473Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T03:56:28.6247687Z               "line": 354
2026-06-21T03:56:28.6247868Z             },
2026-06-21T03:56:28.6247957Z             {
2026-06-21T03:56:28.6248072Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6248176Z               "line": 574
2026-06-21T03:56:28.6248255Z             },
2026-06-21T03:56:28.6248341Z             {
2026-06-21T03:56:28.6248456Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6248542Z               "line": 585
2026-06-21T03:56:28.6248622Z             },
2026-06-21T03:56:28.6248703Z             {
2026-06-21T03:56:28.6248833Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.6248908Z               "line": 41
2026-06-21T03:56:28.6249081Z             },
2026-06-21T03:56:28.6249162Z             {
2026-06-21T03:56:28.6249271Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.6249367Z               "line": 62
2026-06-21T03:56:28.6249448Z             },
2026-06-21T03:56:28.6249529Z             {
2026-06-21T03:56:28.6249638Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6249730Z               "line": 309
2026-06-21T03:56:28.6249814Z             },
2026-06-21T03:56:28.6249895Z             {
2026-06-21T03:56:28.6250001Z               "path": "crates/spt/src/rc.rs",
2026-06-21T03:56:28.6250092Z               "line": 701
2026-06-21T03:56:28.6250172Z             }
2026-06-21T03:56:28.6250258Z           ]
2026-06-21T03:56:28.6250335Z         },
2026-06-21T03:56:28.6250421Z         "int": {
2026-06-21T03:56:28.6250506Z           "complete": true,
2026-06-21T03:56:28.6250595Z           "evidence": [
2026-06-21T03:56:28.6250682Z             {
2026-06-21T03:56:28.6250803Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6250898Z               "line": 913
2026-06-21T03:56:28.6250984Z             },
2026-06-21T03:56:28.6251066Z             {
2026-06-21T03:56:28.6251166Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6251261Z               "line": 953
2026-06-21T03:56:28.6251347Z             },
2026-06-21T03:56:28.6251428Z             {
2026-06-21T03:56:28.6251551Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6251634Z               "line": 1000
2026-06-21T03:56:28.6251714Z             },
2026-06-21T03:56:28.6251790Z             {
2026-06-21T03:56:28.6251914Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6251996Z               "line": 1112
2026-06-21T03:56:28.6252076Z             }
2026-06-21T03:56:28.6252162Z           ]
2026-06-21T03:56:28.6252234Z         },
2026-06-21T03:56:28.6252320Z         "unit": {
2026-06-21T03:56:28.6252410Z           "complete": true,
2026-06-21T03:56:28.6252500Z           "evidence": [
2026-06-21T03:56:28.6252568Z             {
2026-06-21T03:56:28.6252682Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.6252768Z               "line": 175
2026-06-21T03:56:28.6252854Z             },
2026-06-21T03:56:28.6252936Z             {
2026-06-21T03:56:28.6253044Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T03:56:28.6253144Z               "line": 195
2026-06-21T03:56:28.6253227Z             }
2026-06-21T03:56:28.6253307Z           ]
2026-06-21T03:56:28.6253392Z         }
2026-06-21T03:56:28.6253472Z       }
2026-06-21T03:56:28.6253549Z     },
2026-06-21T03:56:28.6253626Z     {
2026-06-21T03:56:28.6253721Z       "id": "REQ-REACH-1",
2026-06-21T03:56:28.6253859Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T03:56:28.6253955Z       "requiredStages": [
2026-06-21T03:56:28.6254044Z         "impl",
2026-06-21T03:56:28.6254130Z         "unit",
2026-06-21T03:56:28.6254217Z         "int"
2026-06-21T03:56:28.6254293Z       ],
2026-06-21T03:56:28.6254373Z       "stages": {
2026-06-21T03:56:28.6254455Z         "doc": {
2026-06-21T03:56:28.6254551Z           "complete": false,
2026-06-21T03:56:28.6254745Z           "evidence": []
2026-06-21T03:56:28.6254823Z         },
2026-06-21T03:56:28.6254908Z         "impl": {
2026-06-21T03:56:28.6255099Z           "complete": true,
2026-06-21T03:56:28.6255180Z           "evidence": [
2026-06-21T03:56:28.6255265Z             {
2026-06-21T03:56:28.6255384Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6255467Z               "line": 574
2026-06-21T03:56:28.6255542Z             },
2026-06-21T03:56:28.6255627Z             {
2026-06-21T03:56:28.6255740Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6255827Z               "line": 76
2026-06-21T03:56:28.6255911Z             },
2026-06-21T03:56:28.6255996Z             {
2026-06-21T03:56:28.6256106Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6256187Z               "line": 222
2026-06-21T03:56:28.6256273Z             },
2026-06-21T03:56:28.6256353Z             {
2026-06-21T03:56:28.6256459Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6256559Z               "line": 422
2026-06-21T03:56:28.6256649Z             },
2026-06-21T03:56:28.6256750Z             {
2026-06-21T03:56:28.6256854Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6256949Z               "line": 529
2026-06-21T03:56:28.6257031Z             },
2026-06-21T03:56:28.6257118Z             {
2026-06-21T03:56:28.6257231Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:56:28.6257327Z               "line": 39
2026-06-21T03:56:28.6257413Z             },
2026-06-21T03:56:28.6257493Z             {
2026-06-21T03:56:28.6257603Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6257680Z               "line": 301
2026-06-21T03:56:28.6257757Z             },
2026-06-21T03:56:28.6257836Z             {
2026-06-21T03:56:28.6257956Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:56:28.6258043Z               "line": 88
2026-06-21T03:56:28.6258123Z             },
2026-06-21T03:56:28.6258218Z             {
2026-06-21T03:56:28.6258324Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:56:28.6258420Z               "line": 98
2026-06-21T03:56:28.6258499Z             },
2026-06-21T03:56:28.6258584Z             {
2026-06-21T03:56:28.6258694Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6258779Z               "line": 233
2026-06-21T03:56:28.6258872Z             }
2026-06-21T03:56:28.6259011Z           ]
2026-06-21T03:56:28.6259098Z         },
2026-06-21T03:56:28.6259177Z         "int": {
2026-06-21T03:56:28.6259273Z           "complete": true,
2026-06-21T03:56:28.6259355Z           "evidence": [
2026-06-21T03:56:28.6259432Z             {
2026-06-21T03:56:28.6259559Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6259641Z               "line": 415
2026-06-21T03:56:28.6259726Z             },
2026-06-21T03:56:28.6259807Z             {
2026-06-21T03:56:28.6259927Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6260022Z               "line": 520
2026-06-21T03:56:28.6260103Z             },
2026-06-21T03:56:28.6260198Z             {
2026-06-21T03:56:28.6260319Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6260427Z               "line": 998
2026-06-21T03:56:28.6260509Z             },
2026-06-21T03:56:28.6260595Z             {
2026-06-21T03:56:28.6260713Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6260804Z               "line": 1383
2026-06-21T03:56:28.6260881Z             }
2026-06-21T03:56:28.6260967Z           ]
2026-06-21T03:56:28.6261051Z         },
2026-06-21T03:56:28.6261141Z         "unit": {
2026-06-21T03:56:28.6261227Z           "complete": true,
2026-06-21T03:56:28.6261326Z           "evidence": [
2026-06-21T03:56:28.6261397Z             {
2026-06-21T03:56:28.6261501Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6261588Z               "line": 639
2026-06-21T03:56:28.6261669Z             },
2026-06-21T03:56:28.6261854Z             {
2026-06-21T03:56:28.6261960Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T03:56:28.6262155Z               "line": 660
2026-06-21T03:56:28.6262232Z             },
2026-06-21T03:56:28.6262313Z             {
2026-06-21T03:56:28.6262422Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T03:56:28.6262504Z               "line": 768
2026-06-21T03:56:28.6262594Z             },
2026-06-21T03:56:28.6262675Z             {
2026-06-21T03:56:28.6262789Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:56:28.6262875Z               "line": 93
2026-06-21T03:56:28.6262970Z             },
2026-06-21T03:56:28.6263051Z             {
2026-06-21T03:56:28.6263167Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T03:56:28.6263266Z               "line": 224
2026-06-21T03:56:28.6263347Z             },
2026-06-21T03:56:28.6263429Z             {
2026-06-21T03:56:28.6263533Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:56:28.6263628Z               "line": 96
2026-06-21T03:56:28.6263700Z             },
2026-06-21T03:56:28.6263792Z             {
2026-06-21T03:56:28.6263900Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T03:56:28.6263985Z               "line": 146
2026-06-21T03:56:28.6264075Z             },
2026-06-21T03:56:28.6264152Z             {
2026-06-21T03:56:28.6264266Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6264346Z               "line": 698
2026-06-21T03:56:28.6264429Z             },
2026-06-21T03:56:28.6264519Z             {
2026-06-21T03:56:28.6264619Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:56:28.6264710Z               "line": 118
2026-06-21T03:56:28.6264782Z             },
2026-06-21T03:56:28.6264862Z             {
2026-06-21T03:56:28.6264957Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T03:56:28.6265053Z               "line": 148
2026-06-21T03:56:28.6265144Z             },
2026-06-21T03:56:28.6265234Z             {
2026-06-21T03:56:28.6265353Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6265444Z               "line": 928
2026-06-21T03:56:28.6265525Z             }
2026-06-21T03:56:28.6265611Z           ]
2026-06-21T03:56:28.6265703Z         }
2026-06-21T03:56:28.6265793Z       }
2026-06-21T03:56:28.6265863Z     },
2026-06-21T03:56:28.6265944Z     {
2026-06-21T03:56:28.6266037Z       "id": "REQ-REACH-2",
2026-06-21T03:56:28.6266192Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T03:56:28.6266273Z       "requiredStages": [],
2026-06-21T03:56:28.6266363Z       "stages": {
2026-06-21T03:56:28.6266448Z         "doc": {
2026-06-21T03:56:28.6266546Z           "complete": false,
2026-06-21T03:56:28.6266637Z           "evidence": []
2026-06-21T03:56:28.6266719Z         },
2026-06-21T03:56:28.6266809Z         "impl": {
2026-06-21T03:56:28.6266899Z           "complete": false,
2026-06-21T03:56:28.6266991Z           "evidence": []
2026-06-21T03:56:28.6267086Z         },
2026-06-21T03:56:28.6267167Z         "int": {
2026-06-21T03:56:28.6267266Z           "complete": false,
2026-06-21T03:56:28.6267358Z           "evidence": []
2026-06-21T03:56:28.6267439Z         },
2026-06-21T03:56:28.6267510Z         "unit": {
2026-06-21T03:56:28.6267606Z           "complete": false,
2026-06-21T03:56:28.6267687Z           "evidence": []
2026-06-21T03:56:28.6267763Z         }
2026-06-21T03:56:28.6267857Z       }
2026-06-21T03:56:28.6267940Z     },
2026-06-21T03:56:28.6268021Z     {
2026-06-21T03:56:28.6268125Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T03:56:28.6271673Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T03:56:28.6271990Z       "requiredStages": [
2026-06-21T03:56:28.6272076Z         "doc",
2026-06-21T03:56:28.6272158Z         "impl",
2026-06-21T03:56:28.6272229Z         "unit",
2026-06-21T03:56:28.6272319Z         "int"
2026-06-21T03:56:28.6272410Z       ],
2026-06-21T03:56:28.6272510Z       "stages": {
2026-06-21T03:56:28.6272591Z         "doc": {
2026-06-21T03:56:28.6272686Z           "complete": true,
2026-06-21T03:56:28.6272773Z           "evidence": [
2026-06-21T03:56:28.6272853Z             {
2026-06-21T03:56:28.6272953Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6273035Z               "line": 372
2026-06-21T03:56:28.6273116Z             }
2026-06-21T03:56:28.6273196Z           ]
2026-06-21T03:56:28.6273292Z         },
2026-06-21T03:56:28.6273378Z         "impl": {
2026-06-21T03:56:28.6273459Z           "complete": true,
2026-06-21T03:56:28.6273554Z           "evidence": [
2026-06-21T03:56:28.6273635Z             {
2026-06-21T03:56:28.6273760Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.6273844Z               "line": 110
2026-06-21T03:56:28.6273931Z             }
2026-06-21T03:56:28.6274022Z           ]
2026-06-21T03:56:28.6274103Z         },
2026-06-21T03:56:28.6274202Z         "int": {
2026-06-21T03:56:28.6274284Z           "complete": true,
2026-06-21T03:56:28.6274381Z           "evidence": [
2026-06-21T03:56:28.6274469Z             {
2026-06-21T03:56:28.6274616Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T03:56:28.6274712Z               "line": 26
2026-06-21T03:56:28.6274789Z             }
2026-06-21T03:56:28.6274874Z           ]
2026-06-21T03:56:28.6274955Z         },
2026-06-21T03:56:28.6279047Z         "unit": {
2026-06-21T03:56:28.6279177Z           "complete": true,
2026-06-21T03:56:28.6279271Z           "evidence": [
2026-06-21T03:56:28.6279353Z             {
2026-06-21T03:56:28.6279473Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T03:56:28.6279577Z               "line": 320
2026-06-21T03:56:28.6279647Z             }
2026-06-21T03:56:28.6279728Z           ]
2026-06-21T03:56:28.6279809Z         }
2026-06-21T03:56:28.6279899Z       }
2026-06-21T03:56:28.6279988Z     },
2026-06-21T03:56:28.6280069Z     {
2026-06-21T03:56:28.6280184Z       "id": "REQ-REL-1",
2026-06-21T03:56:28.6280566Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T03:56:28.6280679Z       "requiredStages": [
2026-06-21T03:56:28.6280761Z         "doc",
2026-06-21T03:56:28.6280847Z         "impl"
2026-06-21T03:56:28.6280932Z       ],
2026-06-21T03:56:28.6281018Z       "stages": {
2026-06-21T03:56:28.6281105Z         "doc": {
2026-06-21T03:56:28.6281190Z           "complete": true,
2026-06-21T03:56:28.6281275Z           "evidence": [
2026-06-21T03:56:28.6281347Z             {
2026-06-21T03:56:28.6281562Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T03:56:28.6281653Z               "line": 3
2026-06-21T03:56:28.6281734Z             }
2026-06-21T03:56:28.6281824Z           ]
2026-06-21T03:56:28.6281905Z         },
2026-06-21T03:56:28.6281992Z         "impl": {
2026-06-21T03:56:28.6282224Z           "complete": true,
2026-06-21T03:56:28.6282324Z           "evidence": [
2026-06-21T03:56:28.6282410Z             {
2026-06-21T03:56:28.6282641Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T03:56:28.6282732Z               "line": 11
2026-06-21T03:56:28.6282813Z             },
2026-06-21T03:56:28.6282903Z             {
2026-06-21T03:56:28.6283009Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6283104Z               "line": 265
2026-06-21T03:56:28.6283184Z             }
2026-06-21T03:56:28.6283265Z           ]
2026-06-21T03:56:28.6283343Z         },
2026-06-21T03:56:28.6283423Z         "int": {
2026-06-21T03:56:28.6283527Z           "complete": false,
2026-06-21T03:56:28.6283610Z           "evidence": []
2026-06-21T03:56:28.6283686Z         },
2026-06-21T03:56:28.6283776Z         "unit": {
2026-06-21T03:56:28.6283861Z           "complete": false,
2026-06-21T03:56:28.6283953Z           "evidence": []
2026-06-21T03:56:28.6284029Z         }
2026-06-21T03:56:28.6284124Z       }
2026-06-21T03:56:28.6284196Z     },
2026-06-21T03:56:28.6284282Z     {
2026-06-21T03:56:28.6284381Z       "id": "REQ-REL-2",
2026-06-21T03:56:28.6284854Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T03:56:28.6284955Z       "requiredStages": [
2026-06-21T03:56:28.6285039Z         "impl",
2026-06-21T03:56:28.6285120Z         "int"
2026-06-21T03:56:28.6285205Z       ],
2026-06-21T03:56:28.6285296Z       "stages": {
2026-06-21T03:56:28.6285381Z         "doc": {
2026-06-21T03:56:28.6285472Z           "complete": true,
2026-06-21T03:56:28.6285568Z           "evidence": [
2026-06-21T03:56:28.6285635Z             {
2026-06-21T03:56:28.6285758Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T03:56:28.6285840Z               "line": 6
2026-06-21T03:56:28.6285930Z             }
2026-06-21T03:56:28.6286016Z           ]
2026-06-21T03:56:28.6286115Z         },
2026-06-21T03:56:28.6286217Z         "impl": {
2026-06-21T03:56:28.6286307Z           "complete": true,
2026-06-21T03:56:28.6286435Z           "evidence": [
2026-06-21T03:56:28.6286522Z             {
2026-06-21T03:56:28.6286640Z               "path": ".github/workflows/release.yml",
2026-06-21T03:56:28.6286726Z               "line": 16
2026-06-21T03:56:28.6286808Z             },
2026-06-21T03:56:28.6286884Z             {
2026-06-21T03:56:28.6286988Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6287074Z               "line": 352
2026-06-21T03:56:28.6287152Z             },
2026-06-21T03:56:28.6287237Z             {
2026-06-21T03:56:28.6287345Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6287431Z               "line": 426
2026-06-21T03:56:28.6287517Z             },
2026-06-21T03:56:28.6287596Z             {
2026-06-21T03:56:28.6287704Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6287796Z               "line": 588
2026-06-21T03:56:28.6287887Z             },
2026-06-21T03:56:28.6287972Z             {
2026-06-21T03:56:28.6288068Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6288159Z               "line": 720
2026-06-21T03:56:28.6288244Z             }
2026-06-21T03:56:28.6288329Z           ]
2026-06-21T03:56:28.6288406Z         },
2026-06-21T03:56:28.6288493Z         "int": {
2026-06-21T03:56:28.6288587Z           "complete": true,
2026-06-21T03:56:28.6288672Z           "evidence": [
2026-06-21T03:56:28.6288760Z             {
2026-06-21T03:56:28.6288878Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T03:56:28.6289040Z               "line": 13
2026-06-21T03:56:28.6289122Z             }
2026-06-21T03:56:28.6289203Z           ]
2026-06-21T03:56:28.6289288Z         },
2026-06-21T03:56:28.6289370Z         "unit": {
2026-06-21T03:56:28.6289456Z           "complete": false,
2026-06-21T03:56:28.6289536Z           "evidence": []
2026-06-21T03:56:28.6289617Z         }
2026-06-21T03:56:28.6289813Z       }
2026-06-21T03:56:28.6289904Z     },
2026-06-21T03:56:28.6289985Z     {
2026-06-21T03:56:28.6290194Z       "id": "REQ-REL-3",
2026-06-21T03:56:28.6290624Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T03:56:28.6290711Z       "requiredStages": [
2026-06-21T03:56:28.6290802Z         "impl",
2026-06-21T03:56:28.6290882Z         "unit"
2026-06-21T03:56:28.6290953Z       ],
2026-06-21T03:56:28.6291040Z       "stages": {
2026-06-21T03:56:28.6291112Z         "doc": {
2026-06-21T03:56:28.6291206Z           "complete": false,
2026-06-21T03:56:28.6291283Z           "evidence": []
2026-06-21T03:56:28.6291369Z         },
2026-06-21T03:56:28.6291460Z         "impl": {
2026-06-21T03:56:28.6291539Z           "complete": true,
2026-06-21T03:56:28.6291632Z           "evidence": [
2026-06-21T03:56:28.6291712Z             {
2026-06-21T03:56:28.6291840Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6291922Z               "line": 237
2026-06-21T03:56:28.6292018Z             },
2026-06-21T03:56:28.6292102Z             {
2026-06-21T03:56:28.6292208Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6292299Z               "line": 289
2026-06-21T03:56:28.6292380Z             },
2026-06-21T03:56:28.6292461Z             {
2026-06-21T03:56:28.6292567Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6292652Z               "line": 329
2026-06-21T03:56:28.6292732Z             },
2026-06-21T03:56:28.6292812Z             {
2026-06-21T03:56:28.6292917Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6293002Z               "line": 353
2026-06-21T03:56:28.6293086Z             },
2026-06-21T03:56:28.6293167Z             {
2026-06-21T03:56:28.6293278Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6293369Z               "line": 394
2026-06-21T03:56:28.6293453Z             }
2026-06-21T03:56:28.6293540Z           ]
2026-06-21T03:56:28.6293621Z         },
2026-06-21T03:56:28.6293716Z         "int": {
2026-06-21T03:56:28.6293807Z           "complete": false,
2026-06-21T03:56:28.6293898Z           "evidence": []
2026-06-21T03:56:28.6293983Z         },
2026-06-21T03:56:28.6294054Z         "unit": {
2026-06-21T03:56:28.6294140Z           "complete": true,
2026-06-21T03:56:28.6294227Z           "evidence": [
2026-06-21T03:56:28.6294307Z             {
2026-06-21T03:56:28.6294417Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6294518Z               "line": 1045
2026-06-21T03:56:28.6294603Z             },
2026-06-21T03:56:28.6294680Z             {
2026-06-21T03:56:28.6294789Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6294876Z               "line": 1104
2026-06-21T03:56:28.6294960Z             }
2026-06-21T03:56:28.6295041Z           ]
2026-06-21T03:56:28.6295124Z         }
2026-06-21T03:56:28.6295219Z       }
2026-06-21T03:56:28.6295298Z     },
2026-06-21T03:56:28.6295390Z     {
2026-06-21T03:56:28.6295481Z       "id": "REQ-RUN-PICKER",
2026-06-21T03:56:28.6300321Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T03:56:28.6300650Z       "requiredStages": [
2026-06-21T03:56:28.6300740Z         "doc",
2026-06-21T03:56:28.6300829Z         "impl",
2026-06-21T03:56:28.6300911Z         "unit"
2026-06-21T03:56:28.6300995Z       ],
2026-06-21T03:56:28.6301075Z       "stages": {
2026-06-21T03:56:28.6301165Z         "doc": {
2026-06-21T03:56:28.6301261Z           "complete": true,
2026-06-21T03:56:28.6301348Z           "evidence": [
2026-06-21T03:56:28.6301437Z             {
2026-06-21T03:56:28.6301533Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6301624Z               "line": 349
2026-06-21T03:56:28.6301700Z             }
2026-06-21T03:56:28.6301776Z           ]
2026-06-21T03:56:28.6301863Z         },
2026-06-21T03:56:28.6301943Z         "impl": {
2026-06-21T03:56:28.6302029Z           "complete": true,
2026-06-21T03:56:28.6302114Z           "evidence": [
2026-06-21T03:56:28.6302197Z             {
2026-06-21T03:56:28.6302301Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6302391Z               "line": 958
2026-06-21T03:56:28.6302473Z             },
2026-06-21T03:56:28.6302554Z             {
2026-06-21T03:56:28.6302658Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6302739Z               "line": 968
2026-06-21T03:56:28.6302822Z             },
2026-06-21T03:56:28.6302912Z             {
2026-06-21T03:56:28.6303031Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6303117Z               "line": 9
2026-06-21T03:56:28.6303203Z             },
2026-06-21T03:56:28.6303283Z             {
2026-06-21T03:56:28.6303391Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T03:56:28.6303482Z               "line": 67
2026-06-21T03:56:28.6303558Z             },
2026-06-21T03:56:28.6303642Z             {
2026-06-21T03:56:28.6303761Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T03:56:28.6303838Z               "line": 16
2026-06-21T03:56:28.6303919Z             },
2026-06-21T03:56:28.6303999Z             {
2026-06-21T03:56:28.6304115Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T03:56:28.6304200Z               "line": 254
2026-06-21T03:56:28.6304286Z             },
2026-06-21T03:56:28.6304376Z             {
2026-06-21T03:56:28.6304491Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6304582Z               "line": 11
2026-06-21T03:56:28.6304662Z             },
2026-06-21T03:56:28.6304754Z             {
2026-06-21T03:56:28.6304858Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6304944Z               "line": 115
2026-06-21T03:56:28.6305025Z             },
2026-06-21T03:56:28.6305102Z             {
2026-06-21T03:56:28.6305216Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6305306Z               "line": 554
2026-06-21T03:56:28.6305393Z             },
2026-06-21T03:56:28.6305473Z             {
2026-06-21T03:56:28.6305592Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6305684Z               "line": 635
2026-06-21T03:56:28.6305760Z             },
2026-06-21T03:56:28.6305849Z             {
2026-06-21T03:56:28.6305960Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6306046Z               "line": 694
2026-06-21T03:56:28.6306136Z             },
2026-06-21T03:56:28.6306311Z             {
2026-06-21T03:56:28.6306421Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6306587Z               "line": 747
2026-06-21T03:56:28.6306674Z             },
2026-06-21T03:56:28.6306755Z             {
2026-06-21T03:56:28.6306873Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6306965Z               "line": 785
2026-06-21T03:56:28.6307037Z             },
2026-06-21T03:56:28.6307123Z             {
2026-06-21T03:56:28.6307231Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6307323Z               "line": 8
2026-06-21T03:56:28.6307403Z             }
2026-06-21T03:56:28.6307489Z           ]
2026-06-21T03:56:28.6307575Z         },
2026-06-21T03:56:28.6307657Z         "int": {
2026-06-21T03:56:28.6307746Z           "complete": false,
2026-06-21T03:56:28.6307832Z           "evidence": []
2026-06-21T03:56:28.6307919Z         },
2026-06-21T03:56:28.6308000Z         "unit": {
2026-06-21T03:56:28.6308103Z           "complete": true,
2026-06-21T03:56:28.6308204Z           "evidence": [
2026-06-21T03:56:28.6308277Z             {
2026-06-21T03:56:28.6308380Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6308470Z               "line": 7638
2026-06-21T03:56:28.6308556Z             },
2026-06-21T03:56:28.6308628Z             {
2026-06-21T03:56:28.6308730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6308825Z               "line": 7649
2026-06-21T03:56:28.6308906Z             },
2026-06-21T03:56:28.6309054Z             {
2026-06-21T03:56:28.6309163Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6309260Z               "line": 879
2026-06-21T03:56:28.6309341Z             },
2026-06-21T03:56:28.6309421Z             {
2026-06-21T03:56:28.6309527Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6309608Z               "line": 928
2026-06-21T03:56:28.6309694Z             },
2026-06-21T03:56:28.6309769Z             {
2026-06-21T03:56:28.6309880Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6309965Z               "line": 979
2026-06-21T03:56:28.6310065Z             },
2026-06-21T03:56:28.6310151Z             {
2026-06-21T03:56:28.6310256Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6310347Z               "line": 996
2026-06-21T03:56:28.6310428Z             },
2026-06-21T03:56:28.6310510Z             {
2026-06-21T03:56:28.6310613Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6310699Z               "line": 1005
2026-06-21T03:56:28.6310786Z             },
2026-06-21T03:56:28.6310868Z             {
2026-06-21T03:56:28.6310980Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6311062Z               "line": 1016
2026-06-21T03:56:28.6311149Z             },
2026-06-21T03:56:28.6311229Z             {
2026-06-21T03:56:28.6311333Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6311428Z               "line": 1038
2026-06-21T03:56:28.6311518Z             },
2026-06-21T03:56:28.6311593Z             {
2026-06-21T03:56:28.6311711Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6311793Z               "line": 1057
2026-06-21T03:56:28.6311879Z             },
2026-06-21T03:56:28.6311964Z             {
2026-06-21T03:56:28.6312074Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6312156Z               "line": 1107
2026-06-21T03:56:28.6312246Z             },
2026-06-21T03:56:28.6312327Z             {
2026-06-21T03:56:28.6312438Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6312523Z               "line": 1136
2026-06-21T03:56:28.6312594Z             },
2026-06-21T03:56:28.6312679Z             {
2026-06-21T03:56:28.6312781Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6312875Z               "line": 1149
2026-06-21T03:56:28.6312956Z             },
2026-06-21T03:56:28.6313042Z             {
2026-06-21T03:56:28.6313261Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6313343Z               "line": 1215
2026-06-21T03:56:28.6313518Z             },
2026-06-21T03:56:28.6313595Z             {
2026-06-21T03:56:28.6313716Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6313796Z               "line": 1256
2026-06-21T03:56:28.6313876Z             },
2026-06-21T03:56:28.6313961Z             {
2026-06-21T03:56:28.6314066Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6314155Z               "line": 1272
2026-06-21T03:56:28.6314235Z             },
2026-06-21T03:56:28.6314311Z             {
2026-06-21T03:56:28.6314427Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6314517Z               "line": 491
2026-06-21T03:56:28.6314607Z             },
2026-06-21T03:56:28.6314684Z             {
2026-06-21T03:56:28.6314799Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6314888Z               "line": 506
2026-06-21T03:56:28.6314985Z             },
2026-06-21T03:56:28.6315066Z             {
2026-06-21T03:56:28.6315184Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6315275Z               "line": 524
2026-06-21T03:56:28.6315357Z             },
2026-06-21T03:56:28.6315437Z             {
2026-06-21T03:56:28.6315546Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6315634Z               "line": 546
2026-06-21T03:56:28.6315714Z             },
2026-06-21T03:56:28.6315800Z             {
2026-06-21T03:56:28.6315905Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6315996Z               "line": 556
2026-06-21T03:56:28.6316085Z             },
2026-06-21T03:56:28.6316166Z             {
2026-06-21T03:56:28.6316278Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T03:56:28.6316362Z               "line": 582
2026-06-21T03:56:28.6316443Z             }
2026-06-21T03:56:28.6316530Z           ]
2026-06-21T03:56:28.6316607Z         }
2026-06-21T03:56:28.6316687Z       }
2026-06-21T03:56:28.6316766Z     },
2026-06-21T03:56:28.6316852Z     {
2026-06-21T03:56:28.6316948Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T03:56:28.6321637Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T03:56:28.6321762Z       "requiredStages": [
2026-06-21T03:56:28.6321845Z         "doc",
2026-06-21T03:56:28.6321931Z         "impl",
2026-06-21T03:56:28.6322012Z         "unit"
2026-06-21T03:56:28.6322215Z       ],
2026-06-21T03:56:28.6322300Z       "stages": {
2026-06-21T03:56:28.6322468Z         "doc": {
2026-06-21T03:56:28.6322553Z           "complete": true,
2026-06-21T03:56:28.6322639Z           "evidence": [
2026-06-21T03:56:28.6322720Z             {
2026-06-21T03:56:28.6322815Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6322906Z               "line": 390
2026-06-21T03:56:28.6322988Z             }
2026-06-21T03:56:28.6323068Z           ]
2026-06-21T03:56:28.6323154Z         },
2026-06-21T03:56:28.6323239Z         "impl": {
2026-06-21T03:56:28.6323327Z           "complete": true,
2026-06-21T03:56:28.6323402Z           "evidence": [
2026-06-21T03:56:28.6323487Z             {
2026-06-21T03:56:28.6323607Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6323698Z               "line": 39
2026-06-21T03:56:28.6323783Z             },
2026-06-21T03:56:28.6323869Z             {
2026-06-21T03:56:28.6323990Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6324083Z               "line": 79
2026-06-21T03:56:28.6324170Z             },
2026-06-21T03:56:28.6324247Z             {
2026-06-21T03:56:28.6324365Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6324441Z               "line": 162
2026-06-21T03:56:28.6324530Z             }
2026-06-21T03:56:28.6324617Z           ]
2026-06-21T03:56:28.6324692Z         },
2026-06-21T03:56:28.6324777Z         "int": {
2026-06-21T03:56:28.6324867Z           "complete": false,
2026-06-21T03:56:28.6324963Z           "evidence": []
2026-06-21T03:56:28.6325035Z         },
2026-06-21T03:56:28.6325129Z         "unit": {
2026-06-21T03:56:28.6325210Z           "complete": true,
2026-06-21T03:56:28.6325297Z           "evidence": [
2026-06-21T03:56:28.6325382Z             {
2026-06-21T03:56:28.6325487Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6325578Z               "line": 206
2026-06-21T03:56:28.6325659Z             },
2026-06-21T03:56:28.6325759Z             {
2026-06-21T03:56:28.6325874Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6325969Z               "line": 222
2026-06-21T03:56:28.6326059Z             },
2026-06-21T03:56:28.6326140Z             {
2026-06-21T03:56:28.6326260Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6326345Z               "line": 238
2026-06-21T03:56:28.6326436Z             },
2026-06-21T03:56:28.6326523Z             {
2026-06-21T03:56:28.6326641Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6326741Z               "line": 251
2026-06-21T03:56:28.6326819Z             },
2026-06-21T03:56:28.6326908Z             {
2026-06-21T03:56:28.6327013Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T03:56:28.6327109Z               "line": 258
2026-06-21T03:56:28.6327186Z             }
2026-06-21T03:56:28.6327270Z           ]
2026-06-21T03:56:28.6327360Z         }
2026-06-21T03:56:28.6327450Z       }
2026-06-21T03:56:28.6327537Z     },
2026-06-21T03:56:28.6327618Z     {
2026-06-21T03:56:28.6327722Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T03:56:28.6327914Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T03:56:28.6327998Z       "requiredStages": [
2026-06-21T03:56:28.6328095Z         "impl",
2026-06-21T03:56:28.6328176Z         "unit"
2026-06-21T03:56:28.6328257Z       ],
2026-06-21T03:56:28.6328341Z       "stages": {
2026-06-21T03:56:28.6328434Z         "doc": {
2026-06-21T03:56:28.6328533Z           "complete": false,
2026-06-21T03:56:28.6328614Z           "evidence": []
2026-06-21T03:56:28.6328700Z         },
2026-06-21T03:56:28.6328787Z         "impl": {
2026-06-21T03:56:28.6328881Z           "complete": true,
2026-06-21T03:56:28.6329015Z           "evidence": [
2026-06-21T03:56:28.6329101Z             {
2026-06-21T03:56:28.6329224Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6329310Z               "line": 18
2026-06-21T03:56:28.6329510Z             },
2026-06-21T03:56:28.6329590Z             {
2026-06-21T03:56:28.6329700Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6329884Z               "line": 35
2026-06-21T03:56:28.6329974Z             },
2026-06-21T03:56:28.6330060Z             {
2026-06-21T03:56:28.6330175Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6330265Z               "line": 72
2026-06-21T03:56:28.6330347Z             }
2026-06-21T03:56:28.6330432Z           ]
2026-06-21T03:56:28.6330513Z         },
2026-06-21T03:56:28.6330594Z         "int": {
2026-06-21T03:56:28.6330690Z           "complete": false,
2026-06-21T03:56:28.6330775Z           "evidence": []
2026-06-21T03:56:28.6330865Z         },
2026-06-21T03:56:28.6330937Z         "unit": {
2026-06-21T03:56:28.6331034Z           "complete": true,
2026-06-21T03:56:28.6331119Z           "evidence": [
2026-06-21T03:56:28.6331204Z             {
2026-06-21T03:56:28.6331310Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6331405Z               "line": 239
2026-06-21T03:56:28.6331491Z             },
2026-06-21T03:56:28.6331581Z             {
2026-06-21T03:56:28.6331701Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6331781Z               "line": 256
2026-06-21T03:56:28.6331867Z             },
2026-06-21T03:56:28.6331945Z             {
2026-06-21T03:56:28.6332044Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6332135Z               "line": 265
2026-06-21T03:56:28.6332206Z             }
2026-06-21T03:56:28.6332293Z           ]
2026-06-21T03:56:28.6332368Z         }
2026-06-21T03:56:28.6332453Z       }
2026-06-21T03:56:28.6332533Z     },
2026-06-21T03:56:28.6332610Z     {
2026-06-21T03:56:28.6332709Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T03:56:28.6332870Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T03:56:28.6332966Z       "requiredStages": [
2026-06-21T03:56:28.6333056Z         "impl",
2026-06-21T03:56:28.6333142Z         "unit"
2026-06-21T03:56:28.6333223Z       ],
2026-06-21T03:56:28.6333304Z       "stages": {
2026-06-21T03:56:28.6333399Z         "doc": {
2026-06-21T03:56:28.6333480Z           "complete": false,
2026-06-21T03:56:28.6333572Z           "evidence": []
2026-06-21T03:56:28.6333657Z         },
2026-06-21T03:56:28.6333742Z         "impl": {
2026-06-21T03:56:28.6333838Z           "complete": true,
2026-06-21T03:56:28.6333915Z           "evidence": [
2026-06-21T03:56:28.6334005Z             {
2026-06-21T03:56:28.6334119Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6334216Z               "line": 598
2026-06-21T03:56:28.6334286Z             }
2026-06-21T03:56:28.6334376Z           ]
2026-06-21T03:56:28.6334468Z         },
2026-06-21T03:56:28.6334545Z         "int": {
2026-06-21T03:56:28.6334638Z           "complete": false,
2026-06-21T03:56:28.6334725Z           "evidence": []
2026-06-21T03:56:28.6334812Z         },
2026-06-21T03:56:28.6334902Z         "unit": {
2026-06-21T03:56:28.6334996Z           "complete": true,
2026-06-21T03:56:28.6335090Z           "evidence": [
2026-06-21T03:56:28.6335182Z             {
2026-06-21T03:56:28.6335303Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6335384Z               "line": 967
2026-06-21T03:56:28.6335475Z             }
2026-06-21T03:56:28.6335552Z           ]
2026-06-21T03:56:28.6335632Z         }
2026-06-21T03:56:28.6335713Z       }
2026-06-21T03:56:28.6335795Z     },
2026-06-21T03:56:28.6335881Z     {
2026-06-21T03:56:28.6335961Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T03:56:28.6336162Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T03:56:28.6336267Z       "requiredStages": [
2026-06-21T03:56:28.6336371Z         "impl",
2026-06-21T03:56:28.6336458Z         "unit",
2026-06-21T03:56:28.6336538Z         "int"
2026-06-21T03:56:28.6336633Z       ],
2026-06-21T03:56:28.6336715Z       "stages": {
2026-06-21T03:56:28.6336801Z         "doc": {
2026-06-21T03:56:28.6336977Z           "complete": false,
2026-06-21T03:56:28.6337074Z           "evidence": []
2026-06-21T03:56:28.6337234Z         },
2026-06-21T03:56:28.6337320Z         "impl": {
2026-06-21T03:56:28.6337417Z           "complete": true,
2026-06-21T03:56:28.6337501Z           "evidence": [
2026-06-21T03:56:28.6337587Z             {
2026-06-21T03:56:28.6337698Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.6337788Z               "line": 24
2026-06-21T03:56:28.6337887Z             },
2026-06-21T03:56:28.6337958Z             {
2026-06-21T03:56:28.6338088Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6338168Z               "line": 22
2026-06-21T03:56:28.6338258Z             }
2026-06-21T03:56:28.6338340Z           ]
2026-06-21T03:56:28.6338422Z         },
2026-06-21T03:56:28.6338502Z         "int": {
2026-06-21T03:56:28.6338587Z           "complete": true,
2026-06-21T03:56:28.6338675Z           "evidence": [
2026-06-21T03:56:28.6338765Z             {
2026-06-21T03:56:28.6338888Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.6339060Z               "line": 260
2026-06-21T03:56:28.6339155Z             }
2026-06-21T03:56:28.6339236Z           ]
2026-06-21T03:56:28.6339318Z         },
2026-06-21T03:56:28.6339403Z         "unit": {
2026-06-21T03:56:28.6339484Z           "complete": true,
2026-06-21T03:56:28.6339580Z           "evidence": [
2026-06-21T03:56:28.6339657Z             {
2026-06-21T03:56:28.6339770Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.6339851Z               "line": 171
2026-06-21T03:56:28.6339933Z             },
2026-06-21T03:56:28.6340023Z             {
2026-06-21T03:56:28.6340122Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.6340203Z               "line": 200
2026-06-21T03:56:28.6340289Z             },
2026-06-21T03:56:28.6340378Z             {
2026-06-21T03:56:28.6340482Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T03:56:28.6340568Z               "line": 220
2026-06-21T03:56:28.6340650Z             },
2026-06-21T03:56:28.6340730Z             {
2026-06-21T03:56:28.6340859Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6340940Z               "line": 199
2026-06-21T03:56:28.6341016Z             },
2026-06-21T03:56:28.6341102Z             {
2026-06-21T03:56:28.6341202Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6341294Z               "line": 219
2026-06-21T03:56:28.6341374Z             },
2026-06-21T03:56:28.6341454Z             {
2026-06-21T03:56:28.6341556Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6341646Z               "line": 244
2026-06-21T03:56:28.6341732Z             },
2026-06-21T03:56:28.6341817Z             {
2026-06-21T03:56:28.6341928Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6342013Z               "line": 276
2026-06-21T03:56:28.6342098Z             },
2026-06-21T03:56:28.6342186Z             {
2026-06-21T03:56:28.6342299Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6342389Z               "line": 297
2026-06-21T03:56:28.6342461Z             },
2026-06-21T03:56:28.6342543Z             {
2026-06-21T03:56:28.6342656Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T03:56:28.6342752Z               "line": 324
2026-06-21T03:56:28.6342834Z             }
2026-06-21T03:56:28.6342915Z           ]
2026-06-21T03:56:28.6342998Z         }
2026-06-21T03:56:28.6343084Z       }
2026-06-21T03:56:28.6343161Z     },
2026-06-21T03:56:28.6343246Z     {
2026-06-21T03:56:28.6343344Z       "id": "REQ-SEAM-INJECT",
2026-06-21T03:56:28.6343502Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T03:56:28.6343593Z       "requiredStages": [
2026-06-21T03:56:28.6343682Z         "impl",
2026-06-21T03:56:28.6343759Z         "unit"
2026-06-21T03:56:28.6343841Z       ],
2026-06-21T03:56:28.6343922Z       "stages": {
2026-06-21T03:56:28.6344122Z         "doc": {
2026-06-21T03:56:28.6344207Z           "complete": false,
2026-06-21T03:56:28.6344293Z           "evidence": []
2026-06-21T03:56:28.6344471Z         },
2026-06-21T03:56:28.6344560Z         "impl": {
2026-06-21T03:56:28.6344651Z           "complete": true,
2026-06-21T03:56:28.6344728Z           "evidence": [
2026-06-21T03:56:28.6344804Z             {
2026-06-21T03:56:28.6344913Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6345004Z               "line": 19
2026-06-21T03:56:28.6345086Z             },
2026-06-21T03:56:28.6345171Z             {
2026-06-21T03:56:28.6345285Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6345358Z               "line": 111
2026-06-21T03:56:28.6345434Z             }
2026-06-21T03:56:28.6345518Z           ]
2026-06-21T03:56:28.6345608Z         },
2026-06-21T03:56:28.6345690Z         "int": {
2026-06-21T03:56:28.6345780Z           "complete": false,
2026-06-21T03:56:28.6345868Z           "evidence": []
2026-06-21T03:56:28.6345954Z         },
2026-06-21T03:56:28.6346040Z         "unit": {
2026-06-21T03:56:28.6346122Z           "complete": true,
2026-06-21T03:56:28.6346221Z           "evidence": [
2026-06-21T03:56:28.6346302Z             {
2026-06-21T03:56:28.6346417Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6346512Z               "line": 345
2026-06-21T03:56:28.6346593Z             },
2026-06-21T03:56:28.6346680Z             {
2026-06-21T03:56:28.6346789Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6346883Z               "line": 365
2026-06-21T03:56:28.6346970Z             }
2026-06-21T03:56:28.6347051Z           ]
2026-06-21T03:56:28.6347142Z         }
2026-06-21T03:56:28.6347222Z       }
2026-06-21T03:56:28.6347309Z     },
2026-06-21T03:56:28.6347389Z     {
2026-06-21T03:56:28.6347503Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T03:56:28.6347638Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T03:56:28.6347737Z       "requiredStages": [
2026-06-21T03:56:28.6347818Z         "impl",
2026-06-21T03:56:28.6347900Z         "unit"
2026-06-21T03:56:28.6347987Z       ],
2026-06-21T03:56:28.6348061Z       "stages": {
2026-06-21T03:56:28.6348147Z         "doc": {
2026-06-21T03:56:28.6348244Z           "complete": false,
2026-06-21T03:56:28.6348330Z           "evidence": []
2026-06-21T03:56:28.6348413Z         },
2026-06-21T03:56:28.6348494Z         "impl": {
2026-06-21T03:56:28.6348585Z           "complete": true,
2026-06-21T03:56:28.6348667Z           "evidence": [
2026-06-21T03:56:28.6348757Z             {
2026-06-21T03:56:28.6348866Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6349024Z               "line": 18
2026-06-21T03:56:28.6349109Z             },
2026-06-21T03:56:28.6349191Z             {
2026-06-21T03:56:28.6349301Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6349391Z               "line": 431
2026-06-21T03:56:28.6349486Z             }
2026-06-21T03:56:28.6349578Z           ]
2026-06-21T03:56:28.6349658Z         },
2026-06-21T03:56:28.6349748Z         "int": {
2026-06-21T03:56:28.6349835Z           "complete": false,
2026-06-21T03:56:28.6349925Z           "evidence": []
2026-06-21T03:56:28.6350001Z         },
2026-06-21T03:56:28.6354082Z         "unit": {
2026-06-21T03:56:28.6354210Z           "complete": true,
2026-06-21T03:56:28.6354300Z           "evidence": [
2026-06-21T03:56:28.6354392Z             {
2026-06-21T03:56:28.6354515Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6354610Z               "line": 881
2026-06-21T03:56:28.6354687Z             },
2026-06-21T03:56:28.6354782Z             {
2026-06-21T03:56:28.6354900Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6354983Z               "line": 891
2026-06-21T03:56:28.6355069Z             }
2026-06-21T03:56:28.6355154Z           ]
2026-06-21T03:56:28.6355245Z         }
2026-06-21T03:56:28.6355322Z       }
2026-06-21T03:56:28.6355412Z     },
2026-06-21T03:56:28.6355651Z     {
2026-06-21T03:56:28.6355745Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T03:56:28.6355898Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T03:56:28.6356254Z       "requiredStages": [
2026-06-21T03:56:28.6356335Z         "impl",
2026-06-21T03:56:28.6356410Z         "unit",
2026-06-21T03:56:28.6356495Z         "int"
2026-06-21T03:56:28.6356567Z       ],
2026-06-21T03:56:28.6356653Z       "stages": {
2026-06-21T03:56:28.6356739Z         "doc": {
2026-06-21T03:56:28.6356829Z           "complete": false,
2026-06-21T03:56:28.6356925Z           "evidence": []
2026-06-21T03:56:28.6357005Z         },
2026-06-21T03:56:28.6357095Z         "impl": {
2026-06-21T03:56:28.6357186Z           "complete": true,
2026-06-21T03:56:28.6357278Z           "evidence": [
2026-06-21T03:56:28.6357364Z             {
2026-06-21T03:56:28.6357477Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.6357569Z               "line": 19
2026-06-21T03:56:28.6357658Z             },
2026-06-21T03:56:28.6357744Z             {
2026-06-21T03:56:28.6357855Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T03:56:28.6357954Z               "line": 12
2026-06-21T03:56:28.6358040Z             },
2026-06-21T03:56:28.6358121Z             {
2026-06-21T03:56:28.6358237Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6358316Z               "line": 301
2026-06-21T03:56:28.6358397Z             }
2026-06-21T03:56:28.6358485Z           ]
2026-06-21T03:56:28.6358557Z         },
2026-06-21T03:56:28.6358645Z         "int": {
2026-06-21T03:56:28.6358727Z           "complete": true,
2026-06-21T03:56:28.6358818Z           "evidence": [
2026-06-21T03:56:28.6358904Z             {
2026-06-21T03:56:28.6359092Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.6359179Z               "line": 259
2026-06-21T03:56:28.6359256Z             }
2026-06-21T03:56:28.6359331Z           ]
2026-06-21T03:56:28.6359412Z         },
2026-06-21T03:56:28.6359504Z         "unit": {
2026-06-21T03:56:28.6359594Z           "complete": true,
2026-06-21T03:56:28.6359684Z           "evidence": [
2026-06-21T03:56:28.6359775Z             {
2026-06-21T03:56:28.6359885Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.6359974Z               "line": 195
2026-06-21T03:56:28.6360056Z             },
2026-06-21T03:56:28.6360143Z             {
2026-06-21T03:56:28.6360252Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.6360342Z               "line": 202
2026-06-21T03:56:28.6360424Z             },
2026-06-21T03:56:28.6360509Z             {
2026-06-21T03:56:28.6360618Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T03:56:28.6360705Z               "line": 225
2026-06-21T03:56:28.6360782Z             },
2026-06-21T03:56:28.6360862Z             {
2026-06-21T03:56:28.6360976Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:56:28.6361068Z               "line": 106
2026-06-21T03:56:28.6361158Z             },
2026-06-21T03:56:28.6361243Z             {
2026-06-21T03:56:28.6361337Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:56:28.6361428Z               "line": 137
2026-06-21T03:56:28.6361512Z             },
2026-06-21T03:56:28.6361593Z             {
2026-06-21T03:56:28.6361698Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T03:56:28.6361780Z               "line": 161
2026-06-21T03:56:28.6361865Z             }
2026-06-21T03:56:28.6361936Z           ]
2026-06-21T03:56:28.6362017Z         }
2026-06-21T03:56:28.6362104Z       }
2026-06-21T03:56:28.6362184Z     },
2026-06-21T03:56:28.6362264Z     {
2026-06-21T03:56:28.6362362Z       "id": "REQ-SEAM-RESUME",
2026-06-21T03:56:28.6362546Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T03:56:28.6362628Z       "requiredStages": [
2026-06-21T03:56:28.6362709Z         "impl",
2026-06-21T03:56:28.6362799Z         "unit"
2026-06-21T03:56:28.6362885Z       ],
2026-06-21T03:56:28.6363066Z       "stages": {
2026-06-21T03:56:28.6363157Z         "doc": {
2026-06-21T03:56:28.6363252Z           "complete": false,
2026-06-21T03:56:28.6363429Z           "evidence": []
2026-06-21T03:56:28.6363514Z         },
2026-06-21T03:56:28.6363601Z         "impl": {
2026-06-21T03:56:28.6363682Z           "complete": true,
2026-06-21T03:56:28.6363762Z           "evidence": [
2026-06-21T03:56:28.6363844Z             {
2026-06-21T03:56:28.6363960Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.6364039Z               "line": 19
2026-06-21T03:56:28.6364129Z             }
2026-06-21T03:56:28.6364204Z           ]
2026-06-21T03:56:28.6364286Z         },
2026-06-21T03:56:28.6364375Z         "int": {
2026-06-21T03:56:28.6364455Z           "complete": false,
2026-06-21T03:56:28.6364536Z           "evidence": []
2026-06-21T03:56:28.6364613Z         },
2026-06-21T03:56:28.6364699Z         "unit": {
2026-06-21T03:56:28.6364793Z           "complete": true,
2026-06-21T03:56:28.6364874Z           "evidence": [
2026-06-21T03:56:28.6364957Z             {
2026-06-21T03:56:28.6365066Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.6365160Z               "line": 201
2026-06-21T03:56:28.6365243Z             },
2026-06-21T03:56:28.6365328Z             {
2026-06-21T03:56:28.6365433Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.6365514Z               "line": 223
2026-06-21T03:56:28.6365586Z             },
2026-06-21T03:56:28.6365662Z             {
2026-06-21T03:56:28.6365766Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T03:56:28.6365853Z               "line": 244
2026-06-21T03:56:28.6365934Z             }
2026-06-21T03:56:28.6366018Z           ]
2026-06-21T03:56:28.6366095Z         }
2026-06-21T03:56:28.6366188Z       }
2026-06-21T03:56:28.6366259Z     },
2026-06-21T03:56:28.6366343Z     {
2026-06-21T03:56:28.6366439Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T03:56:28.6366540Z       "title": "spawn-session seam",
2026-06-21T03:56:28.6366644Z       "requiredStages": [
2026-06-21T03:56:28.6366724Z         "impl",
2026-06-21T03:56:28.6366814Z         "unit"
2026-06-21T03:56:28.6366895Z       ],
2026-06-21T03:56:28.6366984Z       "stages": {
2026-06-21T03:56:28.6367064Z         "doc": {
2026-06-21T03:56:28.6367156Z           "complete": false,
2026-06-21T03:56:28.6367247Z           "evidence": []
2026-06-21T03:56:28.6367327Z         },
2026-06-21T03:56:28.6367422Z         "impl": {
2026-06-21T03:56:28.6367514Z           "complete": true,
2026-06-21T03:56:28.6367605Z           "evidence": [
2026-06-21T03:56:28.6367684Z             {
2026-06-21T03:56:28.6367809Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6367904Z               "line": 20
2026-06-21T03:56:28.6367975Z             }
2026-06-21T03:56:28.6368056Z           ]
2026-06-21T03:56:28.6368134Z         },
2026-06-21T03:56:28.6368209Z         "int": {
2026-06-21T03:56:28.6368290Z           "complete": false,
2026-06-21T03:56:28.6368376Z           "evidence": []
2026-06-21T03:56:28.6368463Z         },
2026-06-21T03:56:28.6368557Z         "unit": {
2026-06-21T03:56:28.6368657Z           "complete": true,
2026-06-21T03:56:28.6368740Z           "evidence": [
2026-06-21T03:56:28.6368825Z             {
2026-06-21T03:56:28.6368930Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6369117Z               "line": 608
2026-06-21T03:56:28.6369200Z             },
2026-06-21T03:56:28.6369282Z             {
2026-06-21T03:56:28.6369393Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6369474Z               "line": 615
2026-06-21T03:56:28.6369562Z             },
2026-06-21T03:56:28.6369643Z             {
2026-06-21T03:56:28.6369749Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6369844Z               "line": 721
2026-06-21T03:56:28.6369924Z             },
2026-06-21T03:56:28.6370016Z             {
2026-06-21T03:56:28.6370120Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6370321Z               "line": 727
2026-06-21T03:56:28.6370407Z             },
2026-06-21T03:56:28.6370592Z             {
2026-06-21T03:56:28.6370703Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6370788Z               "line": 752
2026-06-21T03:56:28.6370873Z             },
2026-06-21T03:56:28.6370945Z             {
2026-06-21T03:56:28.6371065Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T03:56:28.6371146Z               "line": 789
2026-06-21T03:56:28.6371236Z             }
2026-06-21T03:56:28.6371318Z           ]
2026-06-21T03:56:28.6371403Z         }
2026-06-21T03:56:28.6371484Z       }
2026-06-21T03:56:28.6371560Z     },
2026-06-21T03:56:28.6371643Z     {
2026-06-21T03:56:28.6371723Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T03:56:28.6371878Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T03:56:28.6371965Z       "requiredStages": [
2026-06-21T03:56:28.6372044Z         "impl",
2026-06-21T03:56:28.6372124Z         "unit"
2026-06-21T03:56:28.6372200Z       ],
2026-06-21T03:56:28.6372282Z       "stages": {
2026-06-21T03:56:28.6372369Z         "doc": {
2026-06-21T03:56:28.6372463Z           "complete": false,
2026-06-21T03:56:28.6372544Z           "evidence": []
2026-06-21T03:56:28.6372626Z         },
2026-06-21T03:56:28.6372711Z         "impl": {
2026-06-21T03:56:28.6372796Z           "complete": true,
2026-06-21T03:56:28.6372878Z           "evidence": [
2026-06-21T03:56:28.6372959Z             {
2026-06-21T03:56:28.6373087Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6373173Z               "line": 28
2026-06-21T03:56:28.6373256Z             },
2026-06-21T03:56:28.6373331Z             {
2026-06-21T03:56:28.6373459Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6373546Z               "line": 88
2026-06-21T03:56:28.6373617Z             }
2026-06-21T03:56:28.6373703Z           ]
2026-06-21T03:56:28.6373784Z         },
2026-06-21T03:56:28.6373866Z         "int": {
2026-06-21T03:56:28.6373955Z           "complete": false,
2026-06-21T03:56:28.6374041Z           "evidence": []
2026-06-21T03:56:28.6374117Z         },
2026-06-21T03:56:28.6374200Z         "unit": {
2026-06-21T03:56:28.6374294Z           "complete": true,
2026-06-21T03:56:28.6374385Z           "evidence": [
2026-06-21T03:56:28.6374457Z             {
2026-06-21T03:56:28.6374585Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6374670Z               "line": 326
2026-06-21T03:56:28.6374755Z             },
2026-06-21T03:56:28.6374841Z             {
2026-06-21T03:56:28.6374963Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6375043Z               "line": 337
2026-06-21T03:56:28.6375115Z             }
2026-06-21T03:56:28.6375197Z           ]
2026-06-21T03:56:28.6375278Z         }
2026-06-21T03:56:28.6375358Z       }
2026-06-21T03:56:28.6375439Z     },
2026-06-21T03:56:28.6375526Z     {
2026-06-21T03:56:28.6375626Z       "id": "REQ-SEC-1",
2026-06-21T03:56:28.6376002Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T03:56:28.6376098Z       "requiredStages": [
2026-06-21T03:56:28.6376175Z         "impl",
2026-06-21T03:56:28.6376255Z         "unit"
2026-06-21T03:56:28.6376331Z       ],
2026-06-21T03:56:28.6376423Z       "stages": {
2026-06-21T03:56:28.6376508Z         "doc": {
2026-06-21T03:56:28.6376584Z           "complete": false,
2026-06-21T03:56:28.6376674Z           "evidence": []
2026-06-21T03:56:28.6376757Z         },
2026-06-21T03:56:28.6376847Z         "impl": {
2026-06-21T03:56:28.6376937Z           "complete": true,
2026-06-21T03:56:28.6377028Z           "evidence": [
2026-06-21T03:56:28.6377114Z             {
2026-06-21T03:56:28.6377237Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6377331Z               "line": 86
2026-06-21T03:56:28.6377493Z             },
2026-06-21T03:56:28.6377591Z             {
2026-06-21T03:56:28.6377701Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6377887Z               "line": 116
2026-06-21T03:56:28.6377973Z             },
2026-06-21T03:56:28.6378045Z             {
2026-06-21T03:56:28.6378160Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6378235Z               "line": 130
2026-06-21T03:56:28.6378321Z             },
2026-06-21T03:56:28.6378389Z             {
2026-06-21T03:56:28.6378508Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6378597Z               "line": 109
2026-06-21T03:56:28.6378679Z             },
2026-06-21T03:56:28.6378770Z             {
2026-06-21T03:56:28.6378879Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6379127Z               "line": 130
2026-06-21T03:56:28.6379217Z             },
2026-06-21T03:56:28.6379295Z             {
2026-06-21T03:56:28.6379404Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6379499Z               "line": 143
2026-06-21T03:56:28.6379576Z             },
2026-06-21T03:56:28.6379648Z             {
2026-06-21T03:56:28.6379756Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6379842Z               "line": 209
2026-06-21T03:56:28.6379925Z             },
2026-06-21T03:56:28.6380010Z             {
2026-06-21T03:56:28.6380113Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6380199Z               "line": 235
2026-06-21T03:56:28.6380275Z             },
2026-06-21T03:56:28.6380362Z             {
2026-06-21T03:56:28.6380470Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6380556Z               "line": 5295
2026-06-21T03:56:28.6380639Z             }
2026-06-21T03:56:28.6380720Z           ]
2026-06-21T03:56:28.6380799Z         },
2026-06-21T03:56:28.6380871Z         "int": {
2026-06-21T03:56:28.6380963Z           "complete": false,
2026-06-21T03:56:28.6381049Z           "evidence": []
2026-06-21T03:56:28.6381133Z         },
2026-06-21T03:56:28.6381220Z         "unit": {
2026-06-21T03:56:28.6381310Z           "complete": true,
2026-06-21T03:56:28.6381401Z           "evidence": [
2026-06-21T03:56:28.6381481Z             {
2026-06-21T03:56:28.6381592Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6381681Z               "line": 142
2026-06-21T03:56:28.6381762Z             },
2026-06-21T03:56:28.6381850Z             {
2026-06-21T03:56:28.6381959Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6382049Z               "line": 194
2026-06-21T03:56:28.6382130Z             },
2026-06-21T03:56:28.6382212Z             {
2026-06-21T03:56:28.6382325Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T03:56:28.6382410Z               "line": 235
2026-06-21T03:56:28.6382505Z             },
2026-06-21T03:56:28.6382582Z             {
2026-06-21T03:56:28.6382708Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T03:56:28.6382799Z               "line": 140
2026-06-21T03:56:28.6382885Z             },
2026-06-21T03:56:28.6382980Z             {
2026-06-21T03:56:28.6383084Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6383176Z               "line": 247
2026-06-21T03:56:28.6383257Z             },
2026-06-21T03:56:28.6383342Z             {
2026-06-21T03:56:28.6383448Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6383534Z               "line": 277
2026-06-21T03:56:28.6383619Z             },
2026-06-21T03:56:28.6383700Z             {
2026-06-21T03:56:28.6383811Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6383896Z               "line": 310
2026-06-21T03:56:28.6383972Z             },
2026-06-21T03:56:28.6384053Z             {
2026-06-21T03:56:28.6384168Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6384249Z               "line": 329
2026-06-21T03:56:28.6384325Z             },
2026-06-21T03:56:28.6384511Z             {
2026-06-21T03:56:28.6384620Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6384798Z               "line": 362
2026-06-21T03:56:28.6384877Z             },
2026-06-21T03:56:28.6384973Z             {
2026-06-21T03:56:28.6385089Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T03:56:28.6385173Z               "line": 386
2026-06-21T03:56:28.6385259Z             },
2026-06-21T03:56:28.6385339Z             {
2026-06-21T03:56:28.6385435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6385528Z               "line": 8296
2026-06-21T03:56:28.6385613Z             }
2026-06-21T03:56:28.6385694Z           ]
2026-06-21T03:56:28.6385772Z         }
2026-06-21T03:56:28.6385852Z       }
2026-06-21T03:56:28.6385933Z     },
2026-06-21T03:56:28.6386014Z     {
2026-06-21T03:56:28.6386115Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T03:56:28.6389983Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T03:56:28.6390131Z       "requiredStages": [
2026-06-21T03:56:28.6390213Z         "impl",
2026-06-21T03:56:28.6390297Z         "unit",
2026-06-21T03:56:28.6390379Z         "int"
2026-06-21T03:56:28.6390465Z       ],
2026-06-21T03:56:28.6390546Z       "stages": {
2026-06-21T03:56:28.6390631Z         "doc": {
2026-06-21T03:56:28.6390716Z           "complete": false,
2026-06-21T03:56:28.6390806Z           "evidence": []
2026-06-21T03:56:28.6390874Z         },
2026-06-21T03:56:28.6390960Z         "impl": {
2026-06-21T03:56:28.6391040Z           "complete": true,
2026-06-21T03:56:28.6391126Z           "evidence": [
2026-06-21T03:56:28.6391208Z             {
2026-06-21T03:56:28.6391326Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.6391412Z               "line": 1066
2026-06-21T03:56:28.6391494Z             },
2026-06-21T03:56:28.6391570Z             {
2026-06-21T03:56:28.6391679Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6391765Z               "line": 1723
2026-06-21T03:56:28.6391847Z             },
2026-06-21T03:56:28.6391922Z             {
2026-06-21T03:56:28.6392027Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6392109Z               "line": 2850
2026-06-21T03:56:28.6392181Z             }
2026-06-21T03:56:28.6392266Z           ]
2026-06-21T03:56:28.6392346Z         },
2026-06-21T03:56:28.6392434Z         "int": {
2026-06-21T03:56:28.6392519Z           "complete": true,
2026-06-21T03:56:28.6392609Z           "evidence": [
2026-06-21T03:56:28.6392686Z             {
2026-06-21T03:56:28.6392806Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.6392899Z               "line": 189
2026-06-21T03:56:28.6392975Z             },
2026-06-21T03:56:28.6393056Z             {
2026-06-21T03:56:28.6393156Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T03:56:28.6393364Z               "line": 507
2026-06-21T03:56:28.6393446Z             }
2026-06-21T03:56:28.6393611Z           ]
2026-06-21T03:56:28.6393693Z         },
2026-06-21T03:56:28.6393779Z         "unit": {
2026-06-21T03:56:28.6393879Z           "complete": true,
2026-06-21T03:56:28.6393964Z           "evidence": [
2026-06-21T03:56:28.6394051Z             {
2026-06-21T03:56:28.6394156Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T03:56:28.6394245Z               "line": 952
2026-06-21T03:56:28.6394333Z             },
2026-06-21T03:56:28.6394418Z             {
2026-06-21T03:56:28.6394522Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6394604Z               "line": 7486
2026-06-21T03:56:28.6394685Z             }
2026-06-21T03:56:28.6394766Z           ]
2026-06-21T03:56:28.6394851Z         }
2026-06-21T03:56:28.6394928Z       }
2026-06-21T03:56:28.6395010Z     },
2026-06-21T03:56:28.6395090Z     {
2026-06-21T03:56:28.6395190Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T03:56:28.6402144Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T03:56:28.6402311Z       "requiredStages": [
2026-06-21T03:56:28.6402393Z         "doc",
2026-06-21T03:56:28.6402507Z         "impl",
2026-06-21T03:56:28.6402611Z         "unit",
2026-06-21T03:56:28.6402688Z         "int"
2026-06-21T03:56:28.6402774Z       ],
2026-06-21T03:56:28.6402855Z       "stages": {
2026-06-21T03:56:28.6402936Z         "doc": {
2026-06-21T03:56:28.6403027Z           "complete": true,
2026-06-21T03:56:28.6403112Z           "evidence": [
2026-06-21T03:56:28.6403193Z             {
2026-06-21T03:56:28.6403328Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T03:56:28.6403412Z               "line": 130
2026-06-21T03:56:28.6403483Z             },
2026-06-21T03:56:28.6403573Z             {
2026-06-21T03:56:28.6403786Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.6403871Z               "line": 96
2026-06-21T03:56:28.6404049Z             }
2026-06-21T03:56:28.6404129Z           ]
2026-06-21T03:56:28.6404214Z         },
2026-06-21T03:56:28.6404296Z         "impl": {
2026-06-21T03:56:28.6404401Z           "complete": true,
2026-06-21T03:56:28.6404491Z           "evidence": [
2026-06-21T03:56:28.6404573Z             {
2026-06-21T03:56:28.6404706Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.6404796Z               "line": 77
2026-06-21T03:56:28.6404883Z             },
2026-06-21T03:56:28.6404964Z             {
2026-06-21T03:56:28.6405092Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.6405187Z               "line": 183
2026-06-21T03:56:28.6405265Z             },
2026-06-21T03:56:28.6405340Z             {
2026-06-21T03:56:28.6405454Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6405556Z               "line": 222
2026-06-21T03:56:28.6405664Z             },
2026-06-21T03:56:28.6405750Z             {
2026-06-21T03:56:28.6405875Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6405951Z               "line": 71
2026-06-21T03:56:28.6406031Z             },
2026-06-21T03:56:28.6406113Z             {
2026-06-21T03:56:28.6406233Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6406322Z               "line": 176
2026-06-21T03:56:28.6406407Z             }
2026-06-21T03:56:28.6406493Z           ]
2026-06-21T03:56:28.6406574Z         },
2026-06-21T03:56:28.6406662Z         "int": {
2026-06-21T03:56:28.6406753Z           "complete": true,
2026-06-21T03:56:28.6406844Z           "evidence": [
2026-06-21T03:56:28.6406925Z             {
2026-06-21T03:56:28.6407063Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T03:56:28.6407149Z               "line": 25
2026-06-21T03:56:28.6407230Z             }
2026-06-21T03:56:28.6407320Z           ]
2026-06-21T03:56:28.6407401Z         },
2026-06-21T03:56:28.6407483Z         "unit": {
2026-06-21T03:56:28.6407583Z           "complete": true,
2026-06-21T03:56:28.6407677Z           "evidence": [
2026-06-21T03:56:28.6407759Z             {
2026-06-21T03:56:28.6407869Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.6407950Z               "line": 341
2026-06-21T03:56:28.6408031Z             },
2026-06-21T03:56:28.6408113Z             {
2026-06-21T03:56:28.6408231Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T03:56:28.6408312Z               "line": 391
2026-06-21T03:56:28.6408404Z             },
2026-06-21T03:56:28.6408490Z             {
2026-06-21T03:56:28.6408608Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6408694Z               "line": 1244
2026-06-21T03:56:28.6408776Z             },
2026-06-21T03:56:28.6408860Z             {
2026-06-21T03:56:28.6409041Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6409131Z               "line": 184
2026-06-21T03:56:28.6409215Z             },
2026-06-21T03:56:28.6409305Z             {
2026-06-21T03:56:28.6409415Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6409497Z               "line": 208
2026-06-21T03:56:28.6409586Z             },
2026-06-21T03:56:28.6409668Z             {
2026-06-21T03:56:28.6409783Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6409863Z               "line": 236
2026-06-21T03:56:28.6409949Z             },
2026-06-21T03:56:28.6410026Z             {
2026-06-21T03:56:28.6410145Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T03:56:28.6410235Z               "line": 945
2026-06-21T03:56:28.6410312Z             }
2026-06-21T03:56:28.6410393Z           ]
2026-06-21T03:56:28.6410474Z         }
2026-06-21T03:56:28.6410564Z       }
2026-06-21T03:56:28.6410646Z     },
2026-06-21T03:56:28.6410731Z     {
2026-06-21T03:56:28.6410956Z       "id": "REQ-SHELL-1",
2026-06-21T03:56:28.6411818Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T03:56:28.6412014Z       "requiredStages": [
2026-06-21T03:56:28.6412099Z         "impl",
2026-06-21T03:56:28.6412188Z         "unit",
2026-06-21T03:56:28.6412280Z         "int"
2026-06-21T03:56:28.6412361Z       ],
2026-06-21T03:56:28.6412451Z       "stages": {
2026-06-21T03:56:28.6412532Z         "doc": {
2026-06-21T03:56:28.6412619Z           "complete": false,
2026-06-21T03:56:28.6412700Z           "evidence": []
2026-06-21T03:56:28.6412785Z         },
2026-06-21T03:56:28.6412871Z         "impl": {
2026-06-21T03:56:28.6412967Z           "complete": true,
2026-06-21T03:56:28.6413052Z           "evidence": [
2026-06-21T03:56:28.6413138Z             {
2026-06-21T03:56:28.6413263Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6413358Z               "line": 189
2026-06-21T03:56:28.6413434Z             },
2026-06-21T03:56:28.6413520Z             {
2026-06-21T03:56:28.6413630Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6413714Z               "line": 268
2026-06-21T03:56:28.6413796Z             },
2026-06-21T03:56:28.6413883Z             {
2026-06-21T03:56:28.6414001Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6414091Z               "line": 27
2026-06-21T03:56:28.6414172Z             },
2026-06-21T03:56:28.6414253Z             {
2026-06-21T03:56:28.6414370Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6414455Z               "line": 52
2026-06-21T03:56:28.6414541Z             },
2026-06-21T03:56:28.6414624Z             {
2026-06-21T03:56:28.6414741Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6414842Z               "line": 144
2026-06-21T03:56:28.6414914Z             },
2026-06-21T03:56:28.6414999Z             {
2026-06-21T03:56:28.6415113Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6415195Z               "line": 176
2026-06-21T03:56:28.6415281Z             },
2026-06-21T03:56:28.6415366Z             {
2026-06-21T03:56:28.6415481Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6415567Z               "line": 22
2026-06-21T03:56:28.6415648Z             },
2026-06-21T03:56:28.6415734Z             {
2026-06-21T03:56:28.6415844Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6415929Z               "line": 65
2026-06-21T03:56:28.6416019Z             },
2026-06-21T03:56:28.6416107Z             {
2026-06-21T03:56:28.6416225Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6416320Z               "line": 76
2026-06-21T03:56:28.6416397Z             },
2026-06-21T03:56:28.6416478Z             {
2026-06-21T03:56:28.6416591Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6416693Z               "line": 151
2026-06-21T03:56:28.6416779Z             },
2026-06-21T03:56:28.6416864Z             {
2026-06-21T03:56:28.6416981Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6417068Z               "line": 210
2026-06-21T03:56:28.6417157Z             },
2026-06-21T03:56:28.6417246Z             {
2026-06-21T03:56:28.6417361Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6417448Z               "line": 259
2026-06-21T03:56:28.6417533Z             },
2026-06-21T03:56:28.6417627Z             {
2026-06-21T03:56:28.6417743Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6417834Z               "line": 281
2026-06-21T03:56:28.6417913Z             },
2026-06-21T03:56:28.6417995Z             {
2026-06-21T03:56:28.6418200Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6418281Z               "line": 294
2026-06-21T03:56:28.6418443Z             },
2026-06-21T03:56:28.6418524Z             {
2026-06-21T03:56:28.6418649Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.6418735Z               "line": 217
2026-06-21T03:56:28.6418805Z             },
2026-06-21T03:56:28.6418896Z             {
2026-06-21T03:56:28.6419087Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.6419173Z               "line": 233
2026-06-21T03:56:28.6419249Z             },
2026-06-21T03:56:28.6419341Z             {
2026-06-21T03:56:28.6419468Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.6419553Z               "line": 41
2026-06-21T03:56:28.6419639Z             },
2026-06-21T03:56:28.6419724Z             {
2026-06-21T03:56:28.6419851Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.6419937Z               "line": 222
2026-06-21T03:56:28.6420033Z             },
2026-06-21T03:56:28.6420118Z             {
2026-06-21T03:56:28.6420228Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T03:56:28.6420338Z               "line": 173
2026-06-21T03:56:28.6420419Z             },
2026-06-21T03:56:28.6420509Z             {
2026-06-21T03:56:28.6420615Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6420715Z               "line": 354
2026-06-21T03:56:28.6420800Z             },
2026-06-21T03:56:28.6420882Z             {
2026-06-21T03:56:28.6420986Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6421067Z               "line": 419
2026-06-21T03:56:28.6421153Z             },
2026-06-21T03:56:28.6421230Z             {
2026-06-21T03:56:28.6421343Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6421429Z               "line": 333
2026-06-21T03:56:28.6421511Z             },
2026-06-21T03:56:28.6421583Z             {
2026-06-21T03:56:28.6421682Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6421778Z               "line": 6320
2026-06-21T03:56:28.6421869Z             },
2026-06-21T03:56:28.6421950Z             {
2026-06-21T03:56:28.6422054Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6422141Z               "line": 6470
2026-06-21T03:56:28.6422227Z             },
2026-06-21T03:56:28.6422306Z             {
2026-06-21T03:56:28.6422401Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6422482Z               "line": 6646
2026-06-21T03:56:28.6422559Z             }
2026-06-21T03:56:28.6422649Z           ]
2026-06-21T03:56:28.6422730Z         },
2026-06-21T03:56:28.6422816Z         "int": {
2026-06-21T03:56:28.6422898Z           "complete": true,
2026-06-21T03:56:28.6422983Z           "evidence": [
2026-06-21T03:56:28.6423068Z             {
2026-06-21T03:56:28.6423193Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6423274Z               "line": 713
2026-06-21T03:56:28.6423359Z             },
2026-06-21T03:56:28.6423450Z             {
2026-06-21T03:56:28.6423570Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:56:28.6423669Z               "line": 8
2026-06-21T03:56:28.6423756Z             },
2026-06-21T03:56:28.6423832Z             {
2026-06-21T03:56:28.6423961Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T03:56:28.6424046Z               "line": 49
2026-06-21T03:56:28.6424133Z             },
2026-06-21T03:56:28.6424204Z             {
2026-06-21T03:56:28.6424323Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6424409Z               "line": 778
2026-06-21T03:56:28.6424495Z             },
2026-06-21T03:56:28.6424580Z             {
2026-06-21T03:56:28.6424698Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6424789Z               "line": 1213
2026-06-21T03:56:28.6424869Z             },
2026-06-21T03:56:28.6424949Z             {
2026-06-21T03:56:28.6425073Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T03:56:28.6425254Z               "line": 17
2026-06-21T03:56:28.6425431Z             },
2026-06-21T03:56:28.6425512Z             {
2026-06-21T03:56:28.6425635Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T03:56:28.6425718Z               "line": 14
2026-06-21T03:56:28.6425803Z             }
2026-06-21T03:56:28.6425883Z           ]
2026-06-21T03:56:28.6425969Z         },
2026-06-21T03:56:28.6426051Z         "unit": {
2026-06-21T03:56:28.6426141Z           "complete": true,
2026-06-21T03:56:28.6426236Z           "evidence": [
2026-06-21T03:56:28.6426317Z             {
2026-06-21T03:56:28.6426437Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6426527Z               "line": 246
2026-06-21T03:56:28.6426608Z             },
2026-06-21T03:56:28.6426695Z             {
2026-06-21T03:56:28.6426813Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6431064Z               "line": 279
2026-06-21T03:56:28.6431199Z             },
2026-06-21T03:56:28.6431294Z             {
2026-06-21T03:56:28.6431452Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6431533Z               "line": 319
2026-06-21T03:56:28.6431618Z             },
2026-06-21T03:56:28.6431699Z             {
2026-06-21T03:56:28.6431829Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6431918Z               "line": 599
2026-06-21T03:56:28.6432004Z             },
2026-06-21T03:56:28.6432086Z             {
2026-06-21T03:56:28.6432214Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6432299Z               "line": 672
2026-06-21T03:56:28.6432386Z             },
2026-06-21T03:56:28.6432473Z             {
2026-06-21T03:56:28.6432590Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6432681Z               "line": 816
2026-06-21T03:56:28.6432768Z             },
2026-06-21T03:56:28.6432848Z             {
2026-06-21T03:56:28.6432976Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.6433057Z               "line": 595
2026-06-21T03:56:28.6433143Z             },
2026-06-21T03:56:28.6433223Z             {
2026-06-21T03:56:28.6433342Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T03:56:28.6433429Z               "line": 399
2026-06-21T03:56:28.6433501Z             },
2026-06-21T03:56:28.6433586Z             {
2026-06-21T03:56:28.6433687Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6433768Z               "line": 8976
2026-06-21T03:56:28.6433849Z             },
2026-06-21T03:56:28.6433924Z             {
2026-06-21T03:56:28.6434030Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6434111Z               "line": 9300
2026-06-21T03:56:28.6434201Z             },
2026-06-21T03:56:28.6434277Z             {
2026-06-21T03:56:28.6434384Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6434478Z               "line": 9717
2026-06-21T03:56:28.6434559Z             }
2026-06-21T03:56:28.6434636Z           ]
2026-06-21T03:56:28.6434717Z         }
2026-06-21T03:56:28.6434811Z       }
2026-06-21T03:56:28.6434888Z     },
2026-06-21T03:56:28.6434974Z     {
2026-06-21T03:56:28.6435069Z       "id": "REQ-SHELL-2",
2026-06-21T03:56:28.6436578Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T03:56:28.6436678Z       "requiredStages": [
2026-06-21T03:56:28.6436758Z         "impl",
2026-06-21T03:56:28.6436839Z         "unit",
2026-06-21T03:56:28.6436931Z         "int"
2026-06-21T03:56:28.6437011Z       ],
2026-06-21T03:56:28.6437251Z       "stages": {
2026-06-21T03:56:28.6437335Z         "doc": {
2026-06-21T03:56:28.6437556Z           "complete": false,
2026-06-21T03:56:28.6437645Z           "evidence": []
2026-06-21T03:56:28.6437736Z         },
2026-06-21T03:56:28.6437823Z         "impl": {
2026-06-21T03:56:28.6437913Z           "complete": true,
2026-06-21T03:56:28.6438002Z           "evidence": [
2026-06-21T03:56:28.6438092Z             {
2026-06-21T03:56:28.6438216Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.6438301Z               "line": 217
2026-06-21T03:56:28.6438390Z             },
2026-06-21T03:56:28.6438481Z             {
2026-06-21T03:56:28.6438601Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6438691Z               "line": 403
2026-06-21T03:56:28.6438772Z             },
2026-06-21T03:56:28.6438858Z             {
2026-06-21T03:56:28.6439096Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T03:56:28.6439202Z               "line": 250
2026-06-21T03:56:28.6439292Z             },
2026-06-21T03:56:28.6439372Z             {
2026-06-21T03:56:28.6439507Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.6439597Z               "line": 403
2026-06-21T03:56:28.6439682Z             },
2026-06-21T03:56:28.6439764Z             {
2026-06-21T03:56:28.6439888Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6439983Z               "line": 30
2026-06-21T03:56:28.6440065Z             },
2026-06-21T03:56:28.6440151Z             {
2026-06-21T03:56:28.6440264Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6440355Z               "line": 409
2026-06-21T03:56:28.6440447Z             },
2026-06-21T03:56:28.6440527Z             {
2026-06-21T03:56:28.6440645Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6440731Z               "line": 445
2026-06-21T03:56:28.6440816Z             },
2026-06-21T03:56:28.6440900Z             {
2026-06-21T03:56:28.6441023Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6441125Z               "line": 660
2026-06-21T03:56:28.6441211Z             },
2026-06-21T03:56:28.6441295Z             {
2026-06-21T03:56:28.6441411Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.6441506Z               "line": 348
2026-06-21T03:56:28.6441586Z             },
2026-06-21T03:56:28.6441677Z             {
2026-06-21T03:56:28.6441797Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6441883Z               "line": 115
2026-06-21T03:56:28.6441968Z             },
2026-06-21T03:56:28.6442050Z             {
2026-06-21T03:56:28.6442173Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6442259Z               "line": 120
2026-06-21T03:56:28.6442346Z             },
2026-06-21T03:56:28.6442426Z             {
2026-06-21T03:56:28.6442540Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6442641Z               "line": 374
2026-06-21T03:56:28.6442718Z             },
2026-06-21T03:56:28.6442807Z             {
2026-06-21T03:56:28.6442927Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6443014Z               "line": 500
2026-06-21T03:56:28.6443103Z             },
2026-06-21T03:56:28.6443184Z             {
2026-06-21T03:56:28.6443300Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6443385Z               "line": 24
2026-06-21T03:56:28.6443464Z             },
2026-06-21T03:56:28.6443545Z             {
2026-06-21T03:56:28.6443660Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6443747Z               "line": 76
2026-06-21T03:56:28.6443826Z             },
2026-06-21T03:56:28.6443907Z             {
2026-06-21T03:56:28.6444013Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6444099Z               "line": 154
2026-06-21T03:56:28.6444170Z             },
2026-06-21T03:56:28.6444361Z             {
2026-06-21T03:56:28.6444479Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6444643Z               "line": 177
2026-06-21T03:56:28.6444723Z             },
2026-06-21T03:56:28.6444813Z             {
2026-06-21T03:56:28.6444929Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6445023Z               "line": 273
2026-06-21T03:56:28.6445104Z             },
2026-06-21T03:56:28.6445186Z             {
2026-06-21T03:56:28.6445292Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6445381Z               "line": 456
2026-06-21T03:56:28.6445457Z             },
2026-06-21T03:56:28.6445544Z             {
2026-06-21T03:56:28.6445657Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6445738Z               "line": 538
2026-06-21T03:56:28.6445813Z             },
2026-06-21T03:56:28.6445895Z             {
2026-06-21T03:56:28.6446021Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:56:28.6446107Z               "line": 27
2026-06-21T03:56:28.6446193Z             },
2026-06-21T03:56:28.6446285Z             {
2026-06-21T03:56:28.6446403Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:56:28.6446484Z               "line": 48
2026-06-21T03:56:28.6446570Z             },
2026-06-21T03:56:28.6446646Z             {
2026-06-21T03:56:28.6446760Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6446857Z               "line": 517
2026-06-21T03:56:28.6446937Z             },
2026-06-21T03:56:28.6447018Z             {
2026-06-21T03:56:28.6447119Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6447200Z               "line": 1921
2026-06-21T03:56:28.6447290Z             },
2026-06-21T03:56:28.6447371Z             {
2026-06-21T03:56:28.6447477Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6447566Z               "line": 6334
2026-06-21T03:56:28.6447647Z             },
2026-06-21T03:56:28.6447733Z             {
2026-06-21T03:56:28.6447825Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6447914Z               "line": 6395
2026-06-21T03:56:28.6447995Z             },
2026-06-21T03:56:28.6448078Z             {
2026-06-21T03:56:28.6448182Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6448262Z               "line": 6423
2026-06-21T03:56:28.6448344Z             },
2026-06-21T03:56:28.6448426Z             {
2026-06-21T03:56:28.6448530Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6448610Z               "line": 6477
2026-06-21T03:56:28.6448700Z             },
2026-06-21T03:56:28.6448782Z             {
2026-06-21T03:56:28.6448879Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6449032Z               "line": 6732
2026-06-21T03:56:28.6449113Z             },
2026-06-21T03:56:28.6449194Z             {
2026-06-21T03:56:28.6449293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6449380Z               "line": 6792
2026-06-21T03:56:28.6449471Z             },
2026-06-21T03:56:28.6449542Z             {
2026-06-21T03:56:28.6449661Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6449743Z               "line": 298
2026-06-21T03:56:28.6449828Z             },
2026-06-21T03:56:28.6449914Z             {
2026-06-21T03:56:28.6450024Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6450110Z               "line": 339
2026-06-21T03:56:28.6450191Z             }
2026-06-21T03:56:28.6450276Z           ]
2026-06-21T03:56:28.6450354Z         },
2026-06-21T03:56:28.6450439Z         "int": {
2026-06-21T03:56:28.6450524Z           "complete": true,
2026-06-21T03:56:28.6450615Z           "evidence": [
2026-06-21T03:56:28.6450697Z             {
2026-06-21T03:56:28.6450815Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6450905Z               "line": 706
2026-06-21T03:56:28.6450983Z             },
2026-06-21T03:56:28.6451064Z             {
2026-06-21T03:56:28.6451281Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6451372Z               "line": 778
2026-06-21T03:56:28.6451550Z             },
2026-06-21T03:56:28.6451632Z             {
2026-06-21T03:56:28.6451761Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6451846Z               "line": 1213
2026-06-21T03:56:28.6451927Z             },
2026-06-21T03:56:28.6452014Z             {
2026-06-21T03:56:28.6452142Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T03:56:28.6452223Z               "line": 18
2026-06-21T03:56:28.6452300Z             }
2026-06-21T03:56:28.6452390Z           ]
2026-06-21T03:56:28.6452461Z         },
2026-06-21T03:56:28.6452547Z         "unit": {
2026-06-21T03:56:28.6452643Z           "complete": true,
2026-06-21T03:56:28.6452728Z           "evidence": [
2026-06-21T03:56:28.6452814Z             {
2026-06-21T03:56:28.6452930Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6453029Z               "line": 744
2026-06-21T03:56:28.6453110Z             },
2026-06-21T03:56:28.6453196Z             {
2026-06-21T03:56:28.6453311Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T03:56:28.6453396Z               "line": 796
2026-06-21T03:56:28.6453482Z             },
2026-06-21T03:56:28.6453564Z             {
2026-06-21T03:56:28.6453682Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6453768Z               "line": 705
2026-06-21T03:56:28.6453855Z             },
2026-06-21T03:56:28.6453936Z             {
2026-06-21T03:56:28.6454048Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6454138Z               "line": 754
2026-06-21T03:56:28.6454210Z             },
2026-06-21T03:56:28.6454293Z             {
2026-06-21T03:56:28.6454410Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6454492Z               "line": 778
2026-06-21T03:56:28.6454578Z             },
2026-06-21T03:56:28.6454664Z             {
2026-06-21T03:56:28.6454773Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6454865Z               "line": 603
2026-06-21T03:56:28.6454945Z             },
2026-06-21T03:56:28.6455025Z             {
2026-06-21T03:56:28.6455146Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6455231Z               "line": 624
2026-06-21T03:56:28.6455312Z             },
2026-06-21T03:56:28.6455402Z             {
2026-06-21T03:56:28.6455509Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6455593Z               "line": 660
2026-06-21T03:56:28.6455679Z             },
2026-06-21T03:56:28.6455766Z             {
2026-06-21T03:56:28.6455875Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6455960Z               "line": 714
2026-06-21T03:56:28.6456042Z             },
2026-06-21T03:56:28.6456119Z             {
2026-06-21T03:56:28.6456241Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6456341Z               "line": 732
2026-06-21T03:56:28.6456417Z             },
2026-06-21T03:56:28.6456503Z             {
2026-06-21T03:56:28.6456610Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6456690Z               "line": 766
2026-06-21T03:56:28.6456768Z             },
2026-06-21T03:56:28.6456855Z             {
2026-06-21T03:56:28.6456972Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T03:56:28.6457059Z               "line": 841
2026-06-21T03:56:28.6457145Z             },
2026-06-21T03:56:28.6457225Z             {
2026-06-21T03:56:28.6457344Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T03:56:28.6457427Z               "line": 85
2026-06-21T03:56:28.6457497Z             },
2026-06-21T03:56:28.6457573Z             {
2026-06-21T03:56:28.6457674Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6457765Z               "line": 8044
2026-06-21T03:56:28.6457921Z             },
2026-06-21T03:56:28.6458008Z             {
2026-06-21T03:56:28.6458108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6458288Z               "line": 9054
2026-06-21T03:56:28.6458376Z             },
2026-06-21T03:56:28.6458455Z             {
2026-06-21T03:56:28.6458546Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6458623Z               "line": 9124
2026-06-21T03:56:28.6458705Z             },
2026-06-21T03:56:28.6458775Z             {
2026-06-21T03:56:28.6458875Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6459043Z               "line": 9162
2026-06-21T03:56:28.6459122Z             }
2026-06-21T03:56:28.6459203Z           ]
2026-06-21T03:56:28.6459284Z         }
2026-06-21T03:56:28.6459365Z       }
2026-06-21T03:56:28.6459444Z     },
2026-06-21T03:56:28.6459534Z     {
2026-06-21T03:56:28.6459615Z       "id": "REQ-SHELL-3",
2026-06-21T03:56:28.6461408Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T03:56:28.6461519Z       "requiredStages": [
2026-06-21T03:56:28.6461600Z         "impl",
2026-06-21T03:56:28.6461680Z         "unit",
2026-06-21T03:56:28.6461765Z         "int"
2026-06-21T03:56:28.6461846Z       ],
2026-06-21T03:56:28.6461932Z       "stages": {
2026-06-21T03:56:28.6462016Z         "doc": {
2026-06-21T03:56:28.6462115Z           "complete": false,
2026-06-21T03:56:28.6462207Z           "evidence": []
2026-06-21T03:56:28.6462288Z         },
2026-06-21T03:56:28.6462373Z         "impl": {
2026-06-21T03:56:28.6462459Z           "complete": true,
2026-06-21T03:56:28.6462550Z           "evidence": [
2026-06-21T03:56:28.6462626Z             {
2026-06-21T03:56:28.6462749Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.6462846Z               "line": 229
2026-06-21T03:56:28.6462917Z             },
2026-06-21T03:56:28.6462998Z             {
2026-06-21T03:56:28.6463117Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6463199Z               "line": 36
2026-06-21T03:56:28.6463279Z             },
2026-06-21T03:56:28.6463355Z             {
2026-06-21T03:56:28.6463471Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6463556Z               "line": 137
2026-06-21T03:56:28.6463637Z             },
2026-06-21T03:56:28.6463722Z             {
2026-06-21T03:56:28.6463833Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6463913Z               "line": 153
2026-06-21T03:56:28.6464004Z             },
2026-06-21T03:56:28.6464096Z             {
2026-06-21T03:56:28.6464204Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6464295Z               "line": 165
2026-06-21T03:56:28.6464377Z             },
2026-06-21T03:56:28.6464458Z             {
2026-06-21T03:56:28.6464561Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6464656Z               "line": 242
2026-06-21T03:56:28.6464737Z             },
2026-06-21T03:56:28.6464824Z             {
2026-06-21T03:56:28.6464933Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6465018Z               "line": 267
2026-06-21T03:56:28.6465105Z             },
2026-06-21T03:56:28.6465186Z             {
2026-06-21T03:56:28.6465299Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6465382Z               "line": 293
2026-06-21T03:56:28.6465467Z             },
2026-06-21T03:56:28.6465548Z             {
2026-06-21T03:56:28.6465768Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:56:28.6465868Z               "line": 51
2026-06-21T03:56:28.6466059Z             },
2026-06-21T03:56:28.6466139Z             {
2026-06-21T03:56:28.6466258Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6466345Z               "line": 333
2026-06-21T03:56:28.6466436Z             },
2026-06-21T03:56:28.6466515Z             {
2026-06-21T03:56:28.6466630Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6466717Z               "line": 373
2026-06-21T03:56:28.6466792Z             },
2026-06-21T03:56:28.6466877Z             {
2026-06-21T03:56:28.6466987Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6467072Z               "line": 602
2026-06-21T03:56:28.6467151Z             },
2026-06-21T03:56:28.6467232Z             {
2026-06-21T03:56:28.6467352Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6467434Z               "line": 132
2026-06-21T03:56:28.6467528Z             },
2026-06-21T03:56:28.6467609Z             {
2026-06-21T03:56:28.6467738Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6467823Z               "line": 448
2026-06-21T03:56:28.6467904Z             },
2026-06-21T03:56:28.6467977Z             {
2026-06-21T03:56:28.6468082Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T03:56:28.6468157Z               "line": 74
2026-06-21T03:56:28.6468239Z             },
2026-06-21T03:56:28.6468321Z             {
2026-06-21T03:56:28.6468434Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6468520Z               "line": 605
2026-06-21T03:56:28.6468606Z             },
2026-06-21T03:56:28.6468687Z             {
2026-06-21T03:56:28.6468796Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6468878Z               "line": 396
2026-06-21T03:56:28.6469034Z             },
2026-06-21T03:56:28.6469111Z             {
2026-06-21T03:56:28.6469217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6469303Z               "line": 6518
2026-06-21T03:56:28.6469402Z             }
2026-06-21T03:56:28.6469474Z           ]
2026-06-21T03:56:28.6469556Z         },
2026-06-21T03:56:28.6469645Z         "int": {
2026-06-21T03:56:28.6469730Z           "complete": true,
2026-06-21T03:56:28.6469810Z           "evidence": [
2026-06-21T03:56:28.6469887Z             {
2026-06-21T03:56:28.6469995Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6470080Z               "line": 1262
2026-06-21T03:56:28.6470162Z             },
2026-06-21T03:56:28.6470253Z             {
2026-06-21T03:56:28.6470357Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T03:56:28.6470447Z               "line": 17
2026-06-21T03:56:28.6470535Z             }
2026-06-21T03:56:28.6470605Z           ]
2026-06-21T03:56:28.6470690Z         },
2026-06-21T03:56:28.6470766Z         "unit": {
2026-06-21T03:56:28.6470849Z           "complete": true,
2026-06-21T03:56:28.6470944Z           "evidence": [
2026-06-21T03:56:28.6471024Z             {
2026-06-21T03:56:28.6471144Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6471230Z               "line": 311
2026-06-21T03:56:28.6471315Z             },
2026-06-21T03:56:28.6471396Z             {
2026-06-21T03:56:28.6471517Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6471597Z               "line": 325
2026-06-21T03:56:28.6471682Z             },
2026-06-21T03:56:28.6471769Z             {
2026-06-21T03:56:28.6471883Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6471973Z               "line": 343
2026-06-21T03:56:28.6472055Z             },
2026-06-21T03:56:28.6472137Z             {
2026-06-21T03:56:28.6472245Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6472334Z               "line": 364
2026-06-21T03:56:28.6472420Z             },
2026-06-21T03:56:28.6472609Z             {
2026-06-21T03:56:28.6472728Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T03:56:28.6472905Z               "line": 376
2026-06-21T03:56:28.6472990Z             },
2026-06-21T03:56:28.6473077Z             {
2026-06-21T03:56:28.6473182Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6473276Z               "line": 897
2026-06-21T03:56:28.6473362Z             },
2026-06-21T03:56:28.6473448Z             {
2026-06-21T03:56:28.6473558Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6473648Z               "line": 957
2026-06-21T03:56:28.6473735Z             },
2026-06-21T03:56:28.6473820Z             {
2026-06-21T03:56:28.6473930Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T03:56:28.6474016Z               "line": 338
2026-06-21T03:56:28.6474097Z             },
2026-06-21T03:56:28.6474178Z             {
2026-06-21T03:56:28.6474282Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6474388Z               "line": 769
2026-06-21T03:56:28.6474459Z             },
2026-06-21T03:56:28.6474540Z             {
2026-06-21T03:56:28.6474651Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6474741Z               "line": 8836
2026-06-21T03:56:28.6474821Z             }
2026-06-21T03:56:28.6474903Z           ]
2026-06-21T03:56:28.6474980Z         }
2026-06-21T03:56:28.6475061Z       }
2026-06-21T03:56:28.6475140Z     },
2026-06-21T03:56:28.6475216Z     {
2026-06-21T03:56:28.6475312Z       "id": "REQ-SHELL-4",
2026-06-21T03:56:28.6477075Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T03:56:28.6477186Z       "requiredStages": [
2026-06-21T03:56:28.6477263Z         "doc",
2026-06-21T03:56:28.6477347Z         "impl",
2026-06-21T03:56:28.6477432Z         "unit",
2026-06-21T03:56:28.6477513Z         "int"
2026-06-21T03:56:28.6477585Z       ],
2026-06-21T03:56:28.6477674Z       "stages": {
2026-06-21T03:56:28.6477754Z         "doc": {
2026-06-21T03:56:28.6477840Z           "complete": true,
2026-06-21T03:56:28.6477922Z           "evidence": [
2026-06-21T03:56:28.6478012Z             {
2026-06-21T03:56:28.6478112Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6478193Z               "line": 281
2026-06-21T03:56:28.6478274Z             },
2026-06-21T03:56:28.6478356Z             {
2026-06-21T03:56:28.6478576Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T03:56:28.6478670Z               "line": 88
2026-06-21T03:56:28.6478750Z             }
2026-06-21T03:56:28.6478823Z           ]
2026-06-21T03:56:28.6478909Z         },
2026-06-21T03:56:28.6479060Z         "impl": {
2026-06-21T03:56:28.6479148Z           "complete": true,
2026-06-21T03:56:28.6479238Z           "evidence": [
2026-06-21T03:56:28.6479319Z             {
2026-06-21T03:56:28.6479438Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.6479520Z               "line": 243
2026-06-21T03:56:28.6479599Z             },
2026-06-21T03:56:28.6479680Z             {
2026-06-21T03:56:28.6479787Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T03:56:28.6479877Z               "line": 61
2026-06-21T03:56:28.6479957Z             },
2026-06-21T03:56:28.6480034Z             {
2026-06-21T03:56:28.6480154Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6480238Z               "line": 218
2026-06-21T03:56:28.6480314Z             },
2026-06-21T03:56:28.6480504Z             {
2026-06-21T03:56:28.6480621Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6480799Z               "line": 245
2026-06-21T03:56:28.6480884Z             },
2026-06-21T03:56:28.6480969Z             {
2026-06-21T03:56:28.6481075Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6481160Z               "line": 566
2026-06-21T03:56:28.6481241Z             },
2026-06-21T03:56:28.6481322Z             {
2026-06-21T03:56:28.6481428Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6481519Z               "line": 1141
2026-06-21T03:56:28.6481598Z             },
2026-06-21T03:56:28.6481671Z             {
2026-06-21T03:56:28.6481785Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6481871Z               "line": 1153
2026-06-21T03:56:28.6481961Z             },
2026-06-21T03:56:28.6482029Z             {
2026-06-21T03:56:28.6482142Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6482242Z               "line": 1194
2026-06-21T03:56:28.6482325Z             },
2026-06-21T03:56:28.6482415Z             {
2026-06-21T03:56:28.6482533Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6482610Z               "line": 456
2026-06-21T03:56:28.6482697Z             },
2026-06-21T03:56:28.6482772Z             {
2026-06-21T03:56:28.6482890Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6482971Z               "line": 44
2026-06-21T03:56:28.6483052Z             },
2026-06-21T03:56:28.6483136Z             {
2026-06-21T03:56:28.6483245Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6483336Z               "line": 208
2026-06-21T03:56:28.6483409Z             },
2026-06-21T03:56:28.6483498Z             {
2026-06-21T03:56:28.6483603Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6483694Z               "line": 227
2026-06-21T03:56:28.6483775Z             },
2026-06-21T03:56:28.6483860Z             {
2026-06-21T03:56:28.6483971Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6484066Z               "line": 253
2026-06-21T03:56:28.6484151Z             },
2026-06-21T03:56:28.6484228Z             {
2026-06-21T03:56:28.6484342Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6484428Z               "line": 272
2026-06-21T03:56:28.6484513Z             },
2026-06-21T03:56:28.6484601Z             {
2026-06-21T03:56:28.6484709Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6484790Z               "line": 392
2026-06-21T03:56:28.6484872Z             },
2026-06-21T03:56:28.6484954Z             {
2026-06-21T03:56:28.6485062Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6485148Z               "line": 421
2026-06-21T03:56:28.6485230Z             },
2026-06-21T03:56:28.6485310Z             {
2026-06-21T03:56:28.6485429Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6485512Z               "line": 439
2026-06-21T03:56:28.6485607Z             },
2026-06-21T03:56:28.6485686Z             {
2026-06-21T03:56:28.6485800Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6485882Z               "line": 458
2026-06-21T03:56:28.6485963Z             },
2026-06-21T03:56:28.6486053Z             {
2026-06-21T03:56:28.6486167Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6486259Z               "line": 486
2026-06-21T03:56:28.6486339Z             },
2026-06-21T03:56:28.6486419Z             {
2026-06-21T03:56:28.6486526Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6486611Z               "line": 624
2026-06-21T03:56:28.6486701Z             },
2026-06-21T03:56:28.6486778Z             {
2026-06-21T03:56:28.6486888Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6486978Z               "line": 829
2026-06-21T03:56:28.6487146Z             },
2026-06-21T03:56:28.6487231Z             {
2026-06-21T03:56:28.6487345Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6487499Z               "line": 435
2026-06-21T03:56:28.6487579Z             },
2026-06-21T03:56:28.6487665Z             {
2026-06-21T03:56:28.6487770Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6487856Z               "line": 6574
2026-06-21T03:56:28.6487936Z             }
2026-06-21T03:56:28.6488012Z           ]
2026-06-21T03:56:28.6488097Z         },
2026-06-21T03:56:28.6488178Z         "int": {
2026-06-21T03:56:28.6488272Z           "complete": true,
2026-06-21T03:56:28.6488362Z           "evidence": [
2026-06-21T03:56:28.6488444Z             {
2026-06-21T03:56:28.6488563Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T03:56:28.6488652Z               "line": 18
2026-06-21T03:56:28.6488729Z             }
2026-06-21T03:56:28.6488811Z           ]
2026-06-21T03:56:28.6488906Z         },
2026-06-21T03:56:28.6489064Z         "unit": {
2026-06-21T03:56:28.6489150Z           "complete": true,
2026-06-21T03:56:28.6489230Z           "evidence": [
2026-06-21T03:56:28.6489315Z             {
2026-06-21T03:56:28.6489431Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6489516Z               "line": 1391
2026-06-21T03:56:28.6489606Z             },
2026-06-21T03:56:28.6489688Z             {
2026-06-21T03:56:28.6489798Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6489893Z               "line": 1420
2026-06-21T03:56:28.6489974Z             },
2026-06-21T03:56:28.6490056Z             {
2026-06-21T03:56:28.6490164Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6490245Z               "line": 504
2026-06-21T03:56:28.6490328Z             },
2026-06-21T03:56:28.6490409Z             {
2026-06-21T03:56:28.6490532Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6490614Z               "line": 514
2026-06-21T03:56:28.6490695Z             },
2026-06-21T03:56:28.6490771Z             {
2026-06-21T03:56:28.6490898Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6490979Z               "line": 531
2026-06-21T03:56:28.6491060Z             },
2026-06-21T03:56:28.6491144Z             {
2026-06-21T03:56:28.6491257Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6491339Z               "line": 543
2026-06-21T03:56:28.6491411Z             },
2026-06-21T03:56:28.6491501Z             {
2026-06-21T03:56:28.6491616Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T03:56:28.6491693Z               "line": 555
2026-06-21T03:56:28.6491778Z             },
2026-06-21T03:56:28.6491858Z             {
2026-06-21T03:56:28.6491974Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6492059Z               "line": 1145
2026-06-21T03:56:28.6492140Z             },
2026-06-21T03:56:28.6492226Z             {
2026-06-21T03:56:28.6492327Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6492427Z               "line": 776
2026-06-21T03:56:28.6492502Z             }
2026-06-21T03:56:28.6492580Z           ]
2026-06-21T03:56:28.6492661Z         }
2026-06-21T03:56:28.6492745Z       }
2026-06-21T03:56:28.6492832Z     },
2026-06-21T03:56:28.6492904Z     {
2026-06-21T03:56:28.6492999Z       "id": "REQ-SHELL-5",
2026-06-21T03:56:28.6494182Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T03:56:28.6494287Z       "requiredStages": [
2026-06-21T03:56:28.6494363Z         "doc",
2026-06-21T03:56:28.6494444Z         "impl",
2026-06-21T03:56:28.6494650Z         "unit",
2026-06-21T03:56:28.6494735Z         "int"
2026-06-21T03:56:28.6494822Z       ],
2026-06-21T03:56:28.6494988Z       "stages": {
2026-06-21T03:56:28.6495079Z         "doc": {
2026-06-21T03:56:28.6495161Z           "complete": true,
2026-06-21T03:56:28.6495246Z           "evidence": [
2026-06-21T03:56:28.6495331Z             {
2026-06-21T03:56:28.6495412Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6495504Z               "line": 284
2026-06-21T03:56:28.6495584Z             }
2026-06-21T03:56:28.6495670Z           ]
2026-06-21T03:56:28.6495752Z         },
2026-06-21T03:56:28.6495838Z         "impl": {
2026-06-21T03:56:28.6495927Z           "complete": true,
2026-06-21T03:56:28.6496013Z           "evidence": [
2026-06-21T03:56:28.6496100Z             {
2026-06-21T03:56:28.6496218Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T03:56:28.6496308Z               "line": 260
2026-06-21T03:56:28.6496399Z             }
2026-06-21T03:56:28.6496485Z           ]
2026-06-21T03:56:28.6496566Z         },
2026-06-21T03:56:28.6496637Z         "int": {
2026-06-21T03:56:28.6496742Z           "complete": true,
2026-06-21T03:56:28.6496819Z           "evidence": [
2026-06-21T03:56:28.6496899Z             {
2026-06-21T03:56:28.6497018Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6497100Z               "line": 827
2026-06-21T03:56:28.6497181Z             },
2026-06-21T03:56:28.6497252Z             {
2026-06-21T03:56:28.6497371Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6497462Z               "line": 1290
2026-06-21T03:56:28.6497543Z             },
2026-06-21T03:56:28.6497624Z             {
2026-06-21T03:56:28.6497758Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T03:56:28.6497843Z               "line": 23
2026-06-21T03:56:28.6501179Z             }
2026-06-21T03:56:28.6501293Z           ]
2026-06-21T03:56:28.6501373Z         },
2026-06-21T03:56:28.6501467Z         "unit": {
2026-06-21T03:56:28.6501568Z           "complete": true,
2026-06-21T03:56:28.6501657Z           "evidence": [
2026-06-21T03:56:28.6501746Z             {
2026-06-21T03:56:28.6501880Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T03:56:28.6501971Z               "line": 803
2026-06-21T03:56:28.6502052Z             }
2026-06-21T03:56:28.6502128Z           ]
2026-06-21T03:56:28.6502210Z         }
2026-06-21T03:56:28.6502286Z       }
2026-06-21T03:56:28.6502362Z     },
2026-06-21T03:56:28.6502433Z     {
2026-06-21T03:56:28.6502529Z       "id": "REQ-START-1",
2026-06-21T03:56:28.6502719Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T03:56:28.6502820Z       "requiredStages": [
2026-06-21T03:56:28.6502901Z         "impl",
2026-06-21T03:56:28.6502982Z         "unit"
2026-06-21T03:56:28.6503057Z       ],
2026-06-21T03:56:28.6503140Z       "stages": {
2026-06-21T03:56:28.6503230Z         "doc": {
2026-06-21T03:56:28.6503320Z           "complete": false,
2026-06-21T03:56:28.6503416Z           "evidence": []
2026-06-21T03:56:28.6503497Z         },
2026-06-21T03:56:28.6503587Z         "impl": {
2026-06-21T03:56:28.6503673Z           "complete": true,
2026-06-21T03:56:28.6503755Z           "evidence": [
2026-06-21T03:56:28.6503841Z             {
2026-06-21T03:56:28.6503949Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:56:28.6504029Z               "line": 16
2026-06-21T03:56:28.6504111Z             }
2026-06-21T03:56:28.6504191Z           ]
2026-06-21T03:56:28.6504270Z         },
2026-06-21T03:56:28.6504356Z         "int": {
2026-06-21T03:56:28.6504452Z           "complete": false,
2026-06-21T03:56:28.6504539Z           "evidence": []
2026-06-21T03:56:28.6504623Z         },
2026-06-21T03:56:28.6504709Z         "unit": {
2026-06-21T03:56:28.6504801Z           "complete": true,
2026-06-21T03:56:28.6504882Z           "evidence": [
2026-06-21T03:56:28.6504966Z             {
2026-06-21T03:56:28.6505077Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:56:28.6505314Z               "line": 48
2026-06-21T03:56:28.6505392Z             },
2026-06-21T03:56:28.6505563Z             {
2026-06-21T03:56:28.6505672Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T03:56:28.6505759Z               "line": 63
2026-06-21T03:56:28.6505839Z             }
2026-06-21T03:56:28.6505925Z           ]
2026-06-21T03:56:28.6506012Z         }
2026-06-21T03:56:28.6506093Z       }
2026-06-21T03:56:28.6506182Z     },
2026-06-21T03:56:28.6506264Z     {
2026-06-21T03:56:28.6506355Z       "id": "REQ-START-2",
2026-06-21T03:56:28.6506482Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T03:56:28.6506569Z       "requiredStages": [
2026-06-21T03:56:28.6506651Z         "impl",
2026-06-21T03:56:28.6506741Z         "unit",
2026-06-21T03:56:28.6506825Z         "int"
2026-06-21T03:56:28.6506911Z       ],
2026-06-21T03:56:28.6506997Z       "stages": {
2026-06-21T03:56:28.6507079Z         "doc": {
2026-06-21T03:56:28.6507178Z           "complete": false,
2026-06-21T03:56:28.6507268Z           "evidence": []
2026-06-21T03:56:28.6507360Z         },
2026-06-21T03:56:28.6507436Z         "impl": {
2026-06-21T03:56:28.6507516Z           "complete": true,
2026-06-21T03:56:28.6507608Z           "evidence": [
2026-06-21T03:56:28.6507689Z             {
2026-06-21T03:56:28.6507798Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6507883Z               "line": 16
2026-06-21T03:56:28.6507971Z             },
2026-06-21T03:56:28.6508051Z             {
2026-06-21T03:56:28.6508155Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6508247Z               "line": 115
2026-06-21T03:56:28.6508328Z             },
2026-06-21T03:56:28.6508413Z             {
2026-06-21T03:56:28.6508518Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6508595Z               "line": 300
2026-06-21T03:56:28.6508680Z             }
2026-06-21T03:56:28.6508766Z           ]
2026-06-21T03:56:28.6508856Z         },
2026-06-21T03:56:28.6508930Z         "int": {
2026-06-21T03:56:28.6509104Z           "complete": true,
2026-06-21T03:56:28.6509189Z           "evidence": [
2026-06-21T03:56:28.6509275Z             {
2026-06-21T03:56:28.6509397Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.6509491Z               "line": 186
2026-06-21T03:56:28.6509574Z             }
2026-06-21T03:56:28.6509655Z           ]
2026-06-21T03:56:28.6509740Z         },
2026-06-21T03:56:28.6509821Z         "unit": {
2026-06-21T03:56:28.6509912Z           "complete": true,
2026-06-21T03:56:28.6510007Z           "evidence": [
2026-06-21T03:56:28.6510088Z             {
2026-06-21T03:56:28.6510189Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6510265Z               "line": 590
2026-06-21T03:56:28.6510355Z             },
2026-06-21T03:56:28.6510431Z             {
2026-06-21T03:56:28.6510542Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6510641Z               "line": 623
2026-06-21T03:56:28.6510722Z             }
2026-06-21T03:56:28.6510804Z           ]
2026-06-21T03:56:28.6510880Z         }
2026-06-21T03:56:28.6510966Z       }
2026-06-21T03:56:28.6511037Z     },
2026-06-21T03:56:28.6511123Z     {
2026-06-21T03:56:28.6511209Z       "id": "REQ-START-3",
2026-06-21T03:56:28.6511380Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T03:56:28.6511477Z       "requiredStages": [
2026-06-21T03:56:28.6511562Z         "impl",
2026-06-21T03:56:28.6511642Z         "unit",
2026-06-21T03:56:28.6511724Z         "int"
2026-06-21T03:56:28.6511806Z       ],
2026-06-21T03:56:28.6511891Z       "stages": {
2026-06-21T03:56:28.6511971Z         "doc": {
2026-06-21T03:56:28.6512061Z           "complete": false,
2026-06-21T03:56:28.6512142Z           "evidence": []
2026-06-21T03:56:28.6512226Z         },
2026-06-21T03:56:28.6512311Z         "impl": {
2026-06-21T03:56:28.6512407Z           "complete": true,
2026-06-21T03:56:28.6512603Z           "evidence": [
2026-06-21T03:56:28.6512683Z             {
2026-06-21T03:56:28.6512808Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6512988Z               "line": 23
2026-06-21T03:56:28.6513075Z             },
2026-06-21T03:56:28.6513146Z             {
2026-06-21T03:56:28.6513255Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6513337Z               "line": 205
2026-06-21T03:56:28.6513414Z             },
2026-06-21T03:56:28.6513499Z             {
2026-06-21T03:56:28.6513608Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6513690Z               "line": 221
2026-06-21T03:56:28.6513766Z             },
2026-06-21T03:56:28.6513842Z             {
2026-06-21T03:56:28.6513947Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6514034Z               "line": 17
2026-06-21T03:56:28.6514115Z             },
2026-06-21T03:56:28.6514194Z             {
2026-06-21T03:56:28.6514305Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6514396Z               "line": 35
2026-06-21T03:56:28.6514476Z             },
2026-06-21T03:56:28.6514556Z             {
2026-06-21T03:56:28.6514666Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6514756Z               "line": 116
2026-06-21T03:56:28.6514831Z             }
2026-06-21T03:56:28.6514916Z           ]
2026-06-21T03:56:28.6514998Z         },
2026-06-21T03:56:28.6515079Z         "int": {
2026-06-21T03:56:28.6515174Z           "complete": true,
2026-06-21T03:56:28.6515255Z           "evidence": [
2026-06-21T03:56:28.6515337Z             {
2026-06-21T03:56:28.6515442Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T03:56:28.6515526Z               "line": 488
2026-06-21T03:56:28.6515608Z             }
2026-06-21T03:56:28.6515689Z           ]
2026-06-21T03:56:28.6515770Z         },
2026-06-21T03:56:28.6515845Z         "unit": {
2026-06-21T03:56:28.6515938Z           "complete": true,
2026-06-21T03:56:28.6516028Z           "evidence": [
2026-06-21T03:56:28.6516119Z             {
2026-06-21T03:56:28.6516232Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6516329Z               "line": 381
2026-06-21T03:56:28.6516409Z             },
2026-06-21T03:56:28.6516480Z             {
2026-06-21T03:56:28.6516596Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6516681Z               "line": 402
2026-06-21T03:56:28.6516757Z             },
2026-06-21T03:56:28.6516848Z             {
2026-06-21T03:56:28.6516954Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T03:56:28.6517038Z               "line": 412
2026-06-21T03:56:28.6517114Z             },
2026-06-21T03:56:28.6517197Z             {
2026-06-21T03:56:28.6517302Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6517385Z               "line": 591
2026-06-21T03:56:28.6517471Z             },
2026-06-21T03:56:28.6517543Z             {
2026-06-21T03:56:28.6517659Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6517738Z               "line": 624
2026-06-21T03:56:28.6517823Z             },
2026-06-21T03:56:28.6517906Z             {
2026-06-21T03:56:28.6518020Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6518100Z               "line": 657
2026-06-21T03:56:28.6518177Z             }
2026-06-21T03:56:28.6518258Z           ]
2026-06-21T03:56:28.6518339Z         }
2026-06-21T03:56:28.6518424Z       }
2026-06-21T03:56:28.6518506Z     },
2026-06-21T03:56:28.6518583Z     {
2026-06-21T03:56:28.6518682Z       "id": "REQ-START-4",
2026-06-21T03:56:28.6518817Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T03:56:28.6518902Z       "requiredStages": [
2026-06-21T03:56:28.6519064Z         "impl",
2026-06-21T03:56:28.6519155Z         "unit"
2026-06-21T03:56:28.6519240Z       ],
2026-06-21T03:56:28.6519326Z       "stages": {
2026-06-21T03:56:28.6519412Z         "doc": {
2026-06-21T03:56:28.6519616Z           "complete": false,
2026-06-21T03:56:28.6519701Z           "evidence": []
2026-06-21T03:56:28.6519782Z         },
2026-06-21T03:56:28.6519962Z         "impl": {
2026-06-21T03:56:28.6520047Z           "complete": true,
2026-06-21T03:56:28.6520143Z           "evidence": [
2026-06-21T03:56:28.6520225Z             {
2026-06-21T03:56:28.6520343Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6520424Z               "line": 585
2026-06-21T03:56:28.6520501Z             }
2026-06-21T03:56:28.6520581Z           ]
2026-06-21T03:56:28.6520662Z         },
2026-06-21T03:56:28.6520744Z         "int": {
2026-06-21T03:56:28.6520834Z           "complete": false,
2026-06-21T03:56:28.6520929Z           "evidence": []
2026-06-21T03:56:28.6521010Z         },
2026-06-21T03:56:28.6521088Z         "unit": {
2026-06-21T03:56:28.6521183Z           "complete": true,
2026-06-21T03:56:28.6521263Z           "evidence": [
2026-06-21T03:56:28.6521349Z             {
2026-06-21T03:56:28.6521464Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6521545Z               "line": 1026
2026-06-21T03:56:28.6521640Z             }
2026-06-21T03:56:28.6521718Z           ]
2026-06-21T03:56:28.6521802Z         }
2026-06-21T03:56:28.6521883Z       }
2026-06-21T03:56:28.6521969Z     },
2026-06-21T03:56:28.6522047Z     {
2026-06-21T03:56:28.6522126Z       "id": "REQ-START-5",
2026-06-21T03:56:28.6524952Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T03:56:28.6525065Z       "requiredStages": [
2026-06-21T03:56:28.6525145Z         "doc",
2026-06-21T03:56:28.6525226Z         "impl",
2026-06-21T03:56:28.6525311Z         "unit",
2026-06-21T03:56:28.6525396Z         "int"
2026-06-21T03:56:28.6525481Z       ],
2026-06-21T03:56:28.6525558Z       "stages": {
2026-06-21T03:56:28.6525644Z         "doc": {
2026-06-21T03:56:28.6525734Z           "complete": true,
2026-06-21T03:56:28.6525824Z           "evidence": [
2026-06-21T03:56:28.6525906Z             {
2026-06-21T03:56:28.6526007Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6526091Z               "line": 176
2026-06-21T03:56:28.6526183Z             },
2026-06-21T03:56:28.6526273Z             {
2026-06-21T03:56:28.6526406Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T03:56:28.6526508Z               "line": 28
2026-06-21T03:56:28.6526588Z             }
2026-06-21T03:56:28.6526674Z           ]
2026-06-21T03:56:28.6526759Z         },
2026-06-21T03:56:28.6526836Z         "impl": {
2026-06-21T03:56:28.6526931Z           "complete": true,
2026-06-21T03:56:28.6527012Z           "evidence": [
2026-06-21T03:56:28.6527093Z             {
2026-06-21T03:56:28.6527213Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.6527302Z               "line": 26
2026-06-21T03:56:28.6527384Z             },
2026-06-21T03:56:28.6527466Z             {
2026-06-21T03:56:28.6527579Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.6527656Z               "line": 212
2026-06-21T03:56:28.6527737Z             },
2026-06-21T03:56:28.6527824Z             {
2026-06-21T03:56:28.6527936Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.6528103Z               "line": 221
2026-06-21T03:56:28.6528251Z             },
2026-06-21T03:56:28.6528336Z             {
2026-06-21T03:56:28.6528437Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6528522Z               "line": 485
2026-06-21T03:56:28.6528603Z             },
2026-06-21T03:56:28.6528684Z             {
2026-06-21T03:56:28.6528805Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6528886Z               "line": 36
2026-06-21T03:56:28.6529081Z             },
2026-06-21T03:56:28.6529166Z             {
2026-06-21T03:56:28.6529261Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6529342Z               "line": 118
2026-06-21T03:56:28.6529430Z             },
2026-06-21T03:56:28.6529509Z             {
2026-06-21T03:56:28.6529614Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T03:56:28.6529697Z               "line": 329
2026-06-21T03:56:28.6529782Z             }
2026-06-21T03:56:28.6529857Z           ]
2026-06-21T03:56:28.6529938Z         },
2026-06-21T03:56:28.6530030Z         "int": {
2026-06-21T03:56:28.6530125Z           "complete": true,
2026-06-21T03:56:28.6530209Z           "evidence": [
2026-06-21T03:56:28.6530290Z             {
2026-06-21T03:56:28.6530410Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T03:56:28.6530498Z               "line": 17
2026-06-21T03:56:28.6530570Z             }
2026-06-21T03:56:28.6530655Z           ]
2026-06-21T03:56:28.6530737Z         },
2026-06-21T03:56:28.6530822Z         "unit": {
2026-06-21T03:56:28.6530908Z           "complete": true,
2026-06-21T03:56:28.6530994Z           "evidence": [
2026-06-21T03:56:28.6531080Z             {
2026-06-21T03:56:28.6531189Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.6531280Z               "line": 358
2026-06-21T03:56:28.6531352Z             },
2026-06-21T03:56:28.6531428Z             {
2026-06-21T03:56:28.6531551Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T03:56:28.6531638Z               "line": 371
2026-06-21T03:56:28.6531728Z             },
2026-06-21T03:56:28.6531809Z             {
2026-06-21T03:56:28.6531909Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T03:56:28.6531991Z               "line": 597
2026-06-21T03:56:28.6532076Z             }
2026-06-21T03:56:28.6532157Z           ]
2026-06-21T03:56:28.6532239Z         }
2026-06-21T03:56:28.6532321Z       }
2026-06-21T03:56:28.6532400Z     },
2026-06-21T03:56:28.6532486Z     {
2026-06-21T03:56:28.6532587Z       "id": "REQ-STORE-1",
2026-06-21T03:56:28.6533427Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T03:56:28.6533527Z       "requiredStages": [
2026-06-21T03:56:28.6533609Z         "impl",
2026-06-21T03:56:28.6533689Z         "unit"
2026-06-21T03:56:28.6533775Z       ],
2026-06-21T03:56:28.6533856Z       "stages": {
2026-06-21T03:56:28.6533938Z         "doc": {
2026-06-21T03:56:28.6534018Z           "complete": false,
2026-06-21T03:56:28.6534104Z           "evidence": []
2026-06-21T03:56:28.6534181Z         },
2026-06-21T03:56:28.6534262Z         "impl": {
2026-06-21T03:56:28.6534357Z           "complete": true,
2026-06-21T03:56:28.6534447Z           "evidence": [
2026-06-21T03:56:28.6534530Z             {
2026-06-21T03:56:28.6534653Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6534738Z               "line": 23
2026-06-21T03:56:28.6534830Z             },
2026-06-21T03:56:28.6534906Z             {
2026-06-21T03:56:28.6535029Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6535116Z               "line": 46
2026-06-21T03:56:28.6535192Z             },
2026-06-21T03:56:28.6535373Z             {
2026-06-21T03:56:28.6535498Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6535672Z               "line": 97
2026-06-21T03:56:28.6535753Z             },
2026-06-21T03:56:28.6535838Z             {
2026-06-21T03:56:28.6535956Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6536046Z               "line": 125
2026-06-21T03:56:28.6536128Z             },
2026-06-21T03:56:28.6536214Z             {
2026-06-21T03:56:28.6536336Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6536418Z               "line": 207
2026-06-21T03:56:28.6536505Z             },
2026-06-21T03:56:28.6536585Z             {
2026-06-21T03:56:28.6536709Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6536791Z               "line": 231
2026-06-21T03:56:28.6536876Z             },
2026-06-21T03:56:28.6536957Z             {
2026-06-21T03:56:28.6537068Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6537167Z               "line": 467
2026-06-21T03:56:28.6537239Z             },
2026-06-21T03:56:28.6537329Z             {
2026-06-21T03:56:28.6537449Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6537539Z               "line": 25
2026-06-21T03:56:28.6537615Z             },
2026-06-21T03:56:28.6537682Z             {
2026-06-21T03:56:28.6537792Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6537867Z               "line": 120
2026-06-21T03:56:28.6537953Z             },
2026-06-21T03:56:28.6538036Z             {
2026-06-21T03:56:28.6538149Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6538240Z               "line": 148
2026-06-21T03:56:28.6538322Z             },
2026-06-21T03:56:28.6538398Z             {
2026-06-21T03:56:28.6538516Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6538605Z               "line": 165
2026-06-21T03:56:28.6538687Z             },
2026-06-21T03:56:28.6538769Z             {
2026-06-21T03:56:28.6538896Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6539064Z               "line": 180
2026-06-21T03:56:28.6539154Z             },
2026-06-21T03:56:28.6539225Z             {
2026-06-21T03:56:28.6539341Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6539426Z               "line": 198
2026-06-21T03:56:28.6539507Z             },
2026-06-21T03:56:28.6539588Z             {
2026-06-21T03:56:28.6539703Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6539789Z               "line": 207
2026-06-21T03:56:28.6539869Z             },
2026-06-21T03:56:28.6539947Z             {
2026-06-21T03:56:28.6540060Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:56:28.6540141Z               "line": 16
2026-06-21T03:56:28.6540227Z             },
2026-06-21T03:56:28.6540314Z             {
2026-06-21T03:56:28.6540436Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:56:28.6540518Z               "line": 63
2026-06-21T03:56:28.6540610Z             }
2026-06-21T03:56:28.6540690Z           ]
2026-06-21T03:56:28.6540769Z         },
2026-06-21T03:56:28.6540855Z         "int": {
2026-06-21T03:56:28.6540936Z           "complete": false,
2026-06-21T03:56:28.6541026Z           "evidence": []
2026-06-21T03:56:28.6541106Z         },
2026-06-21T03:56:28.6541191Z         "unit": {
2026-06-21T03:56:28.6541278Z           "complete": true,
2026-06-21T03:56:28.6541359Z           "evidence": [
2026-06-21T03:56:28.6541449Z             {
2026-06-21T03:56:28.6541568Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6541659Z               "line": 584
2026-06-21T03:56:28.6541739Z             },
2026-06-21T03:56:28.6541825Z             {
2026-06-21T03:56:28.6541945Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6542031Z               "line": 594
2026-06-21T03:56:28.6542227Z             },
2026-06-21T03:56:28.6542303Z             {
2026-06-21T03:56:28.6542421Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6542603Z               "line": 616
2026-06-21T03:56:28.6542693Z             },
2026-06-21T03:56:28.6542779Z             {
2026-06-21T03:56:28.6542895Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6542989Z               "line": 632
2026-06-21T03:56:28.6543070Z             },
2026-06-21T03:56:28.6543152Z             {
2026-06-21T03:56:28.6543275Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T03:56:28.6543361Z               "line": 690
2026-06-21T03:56:28.6543443Z             },
2026-06-21T03:56:28.6543525Z             {
2026-06-21T03:56:28.6543651Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6543736Z               "line": 472
2026-06-21T03:56:28.6543823Z             },
2026-06-21T03:56:28.6543907Z             {
2026-06-21T03:56:28.6544030Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T03:56:28.6544126Z               "line": 507
2026-06-21T03:56:28.6544202Z             },
2026-06-21T03:56:28.6544287Z             {
2026-06-21T03:56:28.6544402Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:56:28.6544488Z               "line": 120
2026-06-21T03:56:28.6544569Z             },
2026-06-21T03:56:28.6544654Z             {
2026-06-21T03:56:28.6544765Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T03:56:28.6544836Z               "line": 128
2026-06-21T03:56:28.6544917Z             }
2026-06-21T03:56:28.6544998Z           ]
2026-06-21T03:56:28.6545085Z         }
2026-06-21T03:56:28.6545165Z       }
2026-06-21T03:56:28.6545246Z     },
2026-06-21T03:56:28.6545327Z     {
2026-06-21T03:56:28.6545419Z       "id": "REQ-SUBNET-1",
2026-06-21T03:56:28.6545729Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T03:56:28.6545832Z       "requiredStages": [
2026-06-21T03:56:28.6545918Z         "impl",
2026-06-21T03:56:28.6546015Z         "unit"
2026-06-21T03:56:28.6546095Z       ],
2026-06-21T03:56:28.6546180Z       "stages": {
2026-06-21T03:56:28.6546260Z         "doc": {
2026-06-21T03:56:28.6546346Z           "complete": false,
2026-06-21T03:56:28.6546431Z           "evidence": []
2026-06-21T03:56:28.6546511Z         },
2026-06-21T03:56:28.6546596Z         "impl": {
2026-06-21T03:56:28.6546678Z           "complete": true,
2026-06-21T03:56:28.6546769Z           "evidence": [
2026-06-21T03:56:28.6546850Z             {
2026-06-21T03:56:28.6546973Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6547060Z               "line": 281
2026-06-21T03:56:28.6547145Z             },
2026-06-21T03:56:28.6547235Z             {
2026-06-21T03:56:28.6547355Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6547436Z               "line": 651
2026-06-21T03:56:28.6547526Z             },
2026-06-21T03:56:28.6547608Z             {
2026-06-21T03:56:28.6547703Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6547799Z               "line": 3399
2026-06-21T03:56:28.6547884Z             },
2026-06-21T03:56:28.6547967Z             {
2026-06-21T03:56:28.6548075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6548156Z               "line": 3709
2026-06-21T03:56:28.6548238Z             },
2026-06-21T03:56:28.6548319Z             {
2026-06-21T03:56:28.6548423Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6548518Z               "line": 3728
2026-06-21T03:56:28.6548596Z             },
2026-06-21T03:56:28.6548681Z             {
2026-06-21T03:56:28.6548781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6548872Z               "line": 3792
2026-06-21T03:56:28.6549033Z             },
2026-06-21T03:56:28.6549118Z             {
2026-06-21T03:56:28.6549228Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6549543Z               "line": 3834
2026-06-21T03:56:28.6549625Z             },
2026-06-21T03:56:28.6549785Z             {
2026-06-21T03:56:28.6549887Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6549982Z               "line": 4023
2026-06-21T03:56:28.6550062Z             },
2026-06-21T03:56:28.6550144Z             {
2026-06-21T03:56:28.6550249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6550339Z               "line": 4093
2026-06-21T03:56:28.6550419Z             },
2026-06-21T03:56:28.6550502Z             {
2026-06-21T03:56:28.6550602Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6550678Z               "line": 4317
2026-06-21T03:56:28.6550763Z             },
2026-06-21T03:56:28.6550841Z             {
2026-06-21T03:56:28.6550945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6551035Z               "line": 4961
2026-06-21T03:56:28.6551116Z             },
2026-06-21T03:56:28.6551203Z             {
2026-06-21T03:56:28.6551311Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6551415Z               "line": 418
2026-06-21T03:56:28.6551496Z             }
2026-06-21T03:56:28.6551586Z           ]
2026-06-21T03:56:28.6551666Z         },
2026-06-21T03:56:28.6551751Z         "int": {
2026-06-21T03:56:28.6551848Z           "complete": false,
2026-06-21T03:56:28.6551928Z           "evidence": []
2026-06-21T03:56:28.6552009Z         },
2026-06-21T03:56:28.6552080Z         "unit": {
2026-06-21T03:56:28.6552172Z           "complete": true,
2026-06-21T03:56:28.6552253Z           "evidence": [
2026-06-21T03:56:28.6552333Z             {
2026-06-21T03:56:28.6552458Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6552543Z               "line": 1584
2026-06-21T03:56:28.6552629Z             },
2026-06-21T03:56:28.6552705Z             {
2026-06-21T03:56:28.6552811Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6552887Z               "line": 9964
2026-06-21T03:56:28.6552976Z             },
2026-06-21T03:56:28.6553059Z             {
2026-06-21T03:56:28.6553168Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6553254Z               "line": 10134
2026-06-21T03:56:28.6553335Z             },
2026-06-21T03:56:28.6553417Z             {
2026-06-21T03:56:28.6553516Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6553606Z               "line": 10141
2026-06-21T03:56:28.6553694Z             },
2026-06-21T03:56:28.6553760Z             {
2026-06-21T03:56:28.6553858Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6553940Z               "line": 10194
2026-06-21T03:56:28.6554027Z             },
2026-06-21T03:56:28.6554104Z             {
2026-06-21T03:56:28.6554197Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6554282Z               "line": 10211
2026-06-21T03:56:28.6554363Z             },
2026-06-21T03:56:28.6554444Z             {
2026-06-21T03:56:28.6554542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6554643Z               "line": 10241
2026-06-21T03:56:28.6554720Z             },
2026-06-21T03:56:28.6554801Z             {
2026-06-21T03:56:28.6554890Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6554977Z               "line": 10357
2026-06-21T03:56:28.6555063Z             },
2026-06-21T03:56:28.6555139Z             {
2026-06-21T03:56:28.6555229Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6555316Z               "line": 10508
2026-06-21T03:56:28.6555401Z             }
2026-06-21T03:56:28.6555486Z           ]
2026-06-21T03:56:28.6555567Z         }
2026-06-21T03:56:28.6555650Z       }
2026-06-21T03:56:28.6555730Z     },
2026-06-21T03:56:28.6555815Z     {
2026-06-21T03:56:28.6555906Z       "id": "REQ-SUBNET-2",
2026-06-21T03:56:28.6556130Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T03:56:28.6556226Z       "requiredStages": [
2026-06-21T03:56:28.6556411Z         "impl",
2026-06-21T03:56:28.6556493Z         "unit",
2026-06-21T03:56:28.6556575Z         "int"
2026-06-21T03:56:28.6556735Z       ],
2026-06-21T03:56:28.6556820Z       "stages": {
2026-06-21T03:56:28.6556906Z         "doc": {
2026-06-21T03:56:28.6557001Z           "complete": true,
2026-06-21T03:56:28.6557090Z           "evidence": [
2026-06-21T03:56:28.6557175Z             {
2026-06-21T03:56:28.6557325Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T03:56:28.6557414Z               "line": 60
2026-06-21T03:56:28.6557495Z             }
2026-06-21T03:56:28.6557573Z           ]
2026-06-21T03:56:28.6557658Z         },
2026-06-21T03:56:28.6557738Z         "impl": {
2026-06-21T03:56:28.6557834Z           "complete": true,
2026-06-21T03:56:28.6557916Z           "evidence": [
2026-06-21T03:56:28.6558001Z             {
2026-06-21T03:56:28.6558120Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.6558202Z               "line": 886
2026-06-21T03:56:28.6558301Z             },
2026-06-21T03:56:28.6558382Z             {
2026-06-21T03:56:28.6558488Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6558583Z               "line": 1948
2026-06-21T03:56:28.6558659Z             },
2026-06-21T03:56:28.6558740Z             {
2026-06-21T03:56:28.6558861Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6559017Z               "line": 633
2026-06-21T03:56:28.6559093Z             },
2026-06-21T03:56:28.6559180Z             {
2026-06-21T03:56:28.6559293Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T03:56:28.6559389Z               "line": 817
2026-06-21T03:56:28.6559466Z             },
2026-06-21T03:56:28.6559551Z             {
2026-06-21T03:56:28.6559669Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6559755Z               "line": 26
2026-06-21T03:56:28.6559831Z             },
2026-06-21T03:56:28.6559913Z             {
2026-06-21T03:56:28.6560035Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6560122Z               "line": 60
2026-06-21T03:56:28.6560213Z             },
2026-06-21T03:56:28.6560293Z             {
2026-06-21T03:56:28.6560403Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6560499Z               "line": 168
2026-06-21T03:56:28.6560589Z             },
2026-06-21T03:56:28.6560674Z             {
2026-06-21T03:56:28.6560790Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6560875Z               "line": 295
2026-06-21T03:56:28.6560961Z             },
2026-06-21T03:56:28.6561038Z             {
2026-06-21T03:56:28.6561157Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6561238Z               "line": 417
2026-06-21T03:56:28.6561318Z             },
2026-06-21T03:56:28.6561401Z             {
2026-06-21T03:56:28.6561523Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T03:56:28.6561605Z               "line": 252
2026-06-21T03:56:28.6561686Z             },
2026-06-21T03:56:28.6561763Z             {
2026-06-21T03:56:28.6561867Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6561961Z               "line": 3755
2026-06-21T03:56:28.6562047Z             },
2026-06-21T03:56:28.6562127Z             {
2026-06-21T03:56:28.6562230Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6562311Z               "line": 4256
2026-06-21T03:56:28.6562393Z             },
2026-06-21T03:56:28.6562470Z             {
2026-06-21T03:56:28.6562578Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6562665Z               "line": 4892
2026-06-21T03:56:28.6562747Z             }
2026-06-21T03:56:28.6562832Z           ]
2026-06-21T03:56:28.6562912Z         },
2026-06-21T03:56:28.6562995Z         "int": {
2026-06-21T03:56:28.6563075Z           "complete": true,
2026-06-21T03:56:28.6563175Z           "evidence": [
2026-06-21T03:56:28.6563251Z             {
2026-06-21T03:56:28.6563561Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T03:56:28.6563657Z               "line": 22
2026-06-21T03:56:28.6563833Z             },
2026-06-21T03:56:28.6563914Z             {
2026-06-21T03:56:28.6564024Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6564114Z               "line": 645
2026-06-21T03:56:28.6564200Z             },
2026-06-21T03:56:28.6564282Z             {
2026-06-21T03:56:28.6564405Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6564481Z               "line": 887
2026-06-21T03:56:28.6564573Z             }
2026-06-21T03:56:28.6564654Z           ]
2026-06-21T03:56:28.6564738Z         },
2026-06-21T03:56:28.6564823Z         "unit": {
2026-06-21T03:56:28.6564910Z           "complete": true,
2026-06-21T03:56:28.6565004Z           "evidence": [
2026-06-21T03:56:28.6565093Z             {
2026-06-21T03:56:28.6565213Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6565299Z               "line": 586
2026-06-21T03:56:28.6568270Z             },
2026-06-21T03:56:28.6568370Z             {
2026-06-21T03:56:28.6568499Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6568585Z               "line": 10004
2026-06-21T03:56:28.6568666Z             },
2026-06-21T03:56:28.6568743Z             {
2026-06-21T03:56:28.6568852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6569038Z               "line": 10715
2026-06-21T03:56:28.6569115Z             }
2026-06-21T03:56:28.6569185Z           ]
2026-06-21T03:56:28.6569271Z         }
2026-06-21T03:56:28.6569353Z       }
2026-06-21T03:56:28.6569454Z     },
2026-06-21T03:56:28.6569533Z     {
2026-06-21T03:56:28.6569620Z       "id": "REQ-SUBNET-3",
2026-06-21T03:56:28.6569901Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T03:56:28.6569993Z       "requiredStages": [
2026-06-21T03:56:28.6570074Z         "impl",
2026-06-21T03:56:28.6570158Z         "unit"
2026-06-21T03:56:28.6570234Z       ],
2026-06-21T03:56:28.6570315Z       "stages": {
2026-06-21T03:56:28.6570411Z         "doc": {
2026-06-21T03:56:28.6570505Z           "complete": false,
2026-06-21T03:56:28.6570581Z           "evidence": []
2026-06-21T03:56:28.6570663Z         },
2026-06-21T03:56:28.6570749Z         "impl": {
2026-06-21T03:56:28.6570839Z           "complete": true,
2026-06-21T03:56:28.6570920Z           "evidence": [
2026-06-21T03:56:28.6570998Z             {
2026-06-21T03:56:28.6571126Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6571206Z               "line": 152
2026-06-21T03:56:28.6571288Z             },
2026-06-21T03:56:28.6571355Z             {
2026-06-21T03:56:28.6571478Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6571568Z               "line": 299
2026-06-21T03:56:28.6571641Z             },
2026-06-21T03:56:28.6571722Z             {
2026-06-21T03:56:28.6571841Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6571932Z               "line": 443
2026-06-21T03:56:28.6572013Z             },
2026-06-21T03:56:28.6572103Z             {
2026-06-21T03:56:28.6572227Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6572300Z               "line": 532
2026-06-21T03:56:28.6572384Z             },
2026-06-21T03:56:28.6572455Z             {
2026-06-21T03:56:28.6572578Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6572659Z               "line": 125
2026-06-21T03:56:28.6572743Z             },
2026-06-21T03:56:28.6572828Z             {
2026-06-21T03:56:28.6572939Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6573026Z               "line": 253
2026-06-21T03:56:28.6573101Z             },
2026-06-21T03:56:28.6573187Z             {
2026-06-21T03:56:28.6573297Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6573382Z               "line": 264
2026-06-21T03:56:28.6573602Z             },
2026-06-21T03:56:28.6573683Z             {
2026-06-21T03:56:28.6573791Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6573997Z               "line": 285
2026-06-21T03:56:28.6574083Z             },
2026-06-21T03:56:28.6574159Z             {
2026-06-21T03:56:28.6574283Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6574364Z               "line": 621
2026-06-21T03:56:28.6574435Z             },
2026-06-21T03:56:28.6574518Z             {
2026-06-21T03:56:28.6574632Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6574722Z               "line": 680
2026-06-21T03:56:28.6574799Z             },
2026-06-21T03:56:28.6574885Z             {
2026-06-21T03:56:28.6575008Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.6575095Z               "line": 61
2026-06-21T03:56:28.6575176Z             },
2026-06-21T03:56:28.6575252Z             {
2026-06-21T03:56:28.6575383Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.6575460Z               "line": 90
2026-06-21T03:56:28.6575541Z             },
2026-06-21T03:56:28.6575620Z             {
2026-06-21T03:56:28.6575729Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.6575815Z               "line": 125
2026-06-21T03:56:28.6575897Z             },
2026-06-21T03:56:28.6575982Z             {
2026-06-21T03:56:28.6576097Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T03:56:28.6576188Z               "line": 9
2026-06-21T03:56:28.6576273Z             },
2026-06-21T03:56:28.6576349Z             {
2026-06-21T03:56:28.6576460Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6576545Z               "line": 4093
2026-06-21T03:56:28.6576631Z             },
2026-06-21T03:56:28.6576716Z             {
2026-06-21T03:56:28.6576813Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6576903Z               "line": 445
2026-06-21T03:56:28.6576983Z             }
2026-06-21T03:56:28.6577056Z           ]
2026-06-21T03:56:28.6577132Z         },
2026-06-21T03:56:28.6577216Z         "int": {
2026-06-21T03:56:28.6577313Z           "complete": false,
2026-06-21T03:56:28.6577395Z           "evidence": []
2026-06-21T03:56:28.6577480Z         },
2026-06-21T03:56:28.6577560Z         "unit": {
2026-06-21T03:56:28.6577647Z           "complete": true,
2026-06-21T03:56:28.6577729Z           "evidence": [
2026-06-21T03:56:28.6577809Z             {
2026-06-21T03:56:28.6577936Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6578017Z               "line": 1356
2026-06-21T03:56:28.6578098Z             },
2026-06-21T03:56:28.6578168Z             {
2026-06-21T03:56:28.6578291Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6578363Z               "line": 1713
2026-06-21T03:56:28.6578445Z             },
2026-06-21T03:56:28.6578530Z             {
2026-06-21T03:56:28.6578644Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6578740Z               "line": 892
2026-06-21T03:56:28.6578826Z             },
2026-06-21T03:56:28.6578906Z             {
2026-06-21T03:56:28.6579102Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6579187Z               "line": 991
2026-06-21T03:56:28.6579269Z             },
2026-06-21T03:56:28.6579351Z             {
2026-06-21T03:56:28.6579470Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6579545Z               "line": 1041
2026-06-21T03:56:28.6579623Z             },
2026-06-21T03:56:28.6579708Z             {
2026-06-21T03:56:28.6579822Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6579903Z               "line": 1100
2026-06-21T03:56:28.6579981Z             },
2026-06-21T03:56:28.6580060Z             {
2026-06-21T03:56:28.6580165Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T03:56:28.6580248Z               "line": 234
2026-06-21T03:56:28.6580432Z             },
2026-06-21T03:56:28.6580514Z             {
2026-06-21T03:56:28.6580727Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T03:56:28.6580808Z               "line": 49
2026-06-21T03:56:28.6580889Z             },
2026-06-21T03:56:28.6580961Z             {
2026-06-21T03:56:28.6581065Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6581156Z               "line": 10357
2026-06-21T03:56:28.6581237Z             },
2026-06-21T03:56:28.6581323Z             {
2026-06-21T03:56:28.6581423Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6581514Z               "line": 10463
2026-06-21T03:56:28.6581596Z             },
2026-06-21T03:56:28.6581681Z             {
2026-06-21T03:56:28.6581781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6581857Z               "line": 10681
2026-06-21T03:56:28.6581934Z             }
2026-06-21T03:56:28.6582015Z           ]
2026-06-21T03:56:28.6582100Z         }
2026-06-21T03:56:28.6582182Z       }
2026-06-21T03:56:28.6582272Z     },
2026-06-21T03:56:28.6582348Z     {
2026-06-21T03:56:28.6582439Z       "id": "REQ-SUBNET-4",
2026-06-21T03:56:28.6582725Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T03:56:28.6582816Z       "requiredStages": [
2026-06-21T03:56:28.6582902Z         "impl",
2026-06-21T03:56:28.6582982Z         "unit"
2026-06-21T03:56:28.6583062Z       ],
2026-06-21T03:56:28.6583148Z       "stages": {
2026-06-21T03:56:28.6583233Z         "doc": {
2026-06-21T03:56:28.6583327Z           "complete": true,
2026-06-21T03:56:28.6583412Z           "evidence": [
2026-06-21T03:56:28.6583499Z             {
2026-06-21T03:56:28.6583647Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T03:56:28.6583732Z               "line": 60
2026-06-21T03:56:28.6583819Z             }
2026-06-21T03:56:28.6583895Z           ]
2026-06-21T03:56:28.6583980Z         },
2026-06-21T03:56:28.6584061Z         "impl": {
2026-06-21T03:56:28.6584143Z           "complete": true,
2026-06-21T03:56:28.6584229Z           "evidence": [
2026-06-21T03:56:28.6584314Z             {
2026-06-21T03:56:28.6584410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6584500Z               "line": 3399
2026-06-21T03:56:28.6584591Z             },
2026-06-21T03:56:28.6584671Z             {
2026-06-21T03:56:28.6584768Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6584848Z               "line": 4859
2026-06-21T03:56:28.6584929Z             },
2026-06-21T03:56:28.6585010Z             {
2026-06-21T03:56:28.6585093Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6585182Z               "line": 4892
2026-06-21T03:56:28.6585254Z             }
2026-06-21T03:56:28.6585330Z           ]
2026-06-21T03:56:28.6585408Z         },
2026-06-21T03:56:28.6585492Z         "int": {
2026-06-21T03:56:28.6585573Z           "complete": false,
2026-06-21T03:56:28.6585669Z           "evidence": []
2026-06-21T03:56:28.6585751Z         },
2026-06-21T03:56:28.6585835Z         "unit": {
2026-06-21T03:56:28.6585939Z           "complete": true,
2026-06-21T03:56:28.6586025Z           "evidence": [
2026-06-21T03:56:28.6586110Z             {
2026-06-21T03:56:28.6586214Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6586304Z               "line": 10120
2026-06-21T03:56:28.6586385Z             },
2026-06-21T03:56:28.6586467Z             {
2026-06-21T03:56:28.6586566Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6586652Z               "line": 10194
2026-06-21T03:56:28.6586729Z             }
2026-06-21T03:56:28.6586810Z           ]
2026-06-21T03:56:28.6586890Z         }
2026-06-21T03:56:28.6586972Z       }
2026-06-21T03:56:28.6587053Z     },
2026-06-21T03:56:28.6587139Z     {
2026-06-21T03:56:28.6587219Z       "id": "REQ-SUBNET-5",
2026-06-21T03:56:28.6588411Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T03:56:28.6588672Z       "requiredStages": [
2026-06-21T03:56:28.6588752Z         "impl",
2026-06-21T03:56:28.6588837Z         "unit",
2026-06-21T03:56:28.6588914Z         "int"
2026-06-21T03:56:28.6589104Z       ],
2026-06-21T03:56:28.6589185Z       "stages": {
2026-06-21T03:56:28.6589258Z         "doc": {
2026-06-21T03:56:28.6589358Z           "complete": false,
2026-06-21T03:56:28.6589447Z           "evidence": []
2026-06-21T03:56:28.6589524Z         },
2026-06-21T03:56:28.6589606Z         "impl": {
2026-06-21T03:56:28.6589691Z           "complete": true,
2026-06-21T03:56:28.6589771Z           "evidence": [
2026-06-21T03:56:28.6589864Z             {
2026-06-21T03:56:28.6589986Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T03:56:28.6590077Z               "line": 128
2026-06-21T03:56:28.6590158Z             },
2026-06-21T03:56:28.6590254Z             {
2026-06-21T03:56:28.6590382Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T03:56:28.6590468Z               "line": 413
2026-06-21T03:56:28.6590550Z             },
2026-06-21T03:56:28.6590625Z             {
2026-06-21T03:56:28.6590735Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6590818Z               "line": 74
2026-06-21T03:56:28.6590894Z             },
2026-06-21T03:56:28.6590982Z             {
2026-06-21T03:56:28.6591098Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.6591189Z               "line": 332
2026-06-21T03:56:28.6591269Z             },
2026-06-21T03:56:28.6591349Z             {
2026-06-21T03:56:28.6591464Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.6591540Z               "line": 621
2026-06-21T03:56:28.6591626Z             },
2026-06-21T03:56:28.6591716Z             {
2026-06-21T03:56:28.6591832Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.6591922Z               "line": 31
2026-06-21T03:56:28.6592002Z             },
2026-06-21T03:56:28.6592089Z             {
2026-06-21T03:56:28.6592212Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.6592298Z               "line": 50
2026-06-21T03:56:28.6592369Z             },
2026-06-21T03:56:28.6592452Z             {
2026-06-21T03:56:28.6592575Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.6592655Z               "line": 69
2026-06-21T03:56:28.6592742Z             },
2026-06-21T03:56:28.6592823Z             {
2026-06-21T03:56:28.6592941Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.6593028Z               "line": 113
2026-06-21T03:56:28.6593105Z             },
2026-06-21T03:56:28.6593185Z             {
2026-06-21T03:56:28.6593309Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:56:28.6593401Z               "line": 25
2026-06-21T03:56:28.6593481Z             },
2026-06-21T03:56:28.6593561Z             {
2026-06-21T03:56:28.6593680Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:56:28.6593761Z               "line": 34
2026-06-21T03:56:28.6593835Z             },
2026-06-21T03:56:28.6593911Z             {
2026-06-21T03:56:28.6594035Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:56:28.6594122Z               "line": 17
2026-06-21T03:56:28.6594207Z             },
2026-06-21T03:56:28.6594287Z             {
2026-06-21T03:56:28.6594389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6594479Z               "line": 4817
2026-06-21T03:56:28.6594555Z             },
2026-06-21T03:56:28.6594636Z             {
2026-06-21T03:56:28.6594737Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T03:56:28.6594822Z               "line": 419
2026-06-21T03:56:28.6595023Z             }
2026-06-21T03:56:28.6595104Z           ]
2026-06-21T03:56:28.6595189Z         },
2026-06-21T03:56:28.6595348Z         "int": {
2026-06-21T03:56:28.6595442Z           "complete": true,
2026-06-21T03:56:28.6595523Z           "evidence": [
2026-06-21T03:56:28.6595614Z             {
2026-06-21T03:56:28.6595747Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6595828Z               "line": 821
2026-06-21T03:56:28.6595915Z             }
2026-06-21T03:56:28.6595991Z           ]
2026-06-21T03:56:28.6596075Z         },
2026-06-21T03:56:28.6596157Z         "unit": {
2026-06-21T03:56:28.6596248Z           "complete": true,
2026-06-21T03:56:28.6596334Z           "evidence": [
2026-06-21T03:56:28.6596414Z             {
2026-06-21T03:56:28.6596532Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.6596614Z               "line": 341
2026-06-21T03:56:28.6596698Z             },
2026-06-21T03:56:28.6596783Z             {
2026-06-21T03:56:28.6596902Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T03:56:28.6596989Z               "line": 1115
2026-06-21T03:56:28.6597069Z             },
2026-06-21T03:56:28.6597154Z             {
2026-06-21T03:56:28.6597265Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T03:56:28.6597346Z               "line": 151
2026-06-21T03:56:28.6597431Z             },
2026-06-21T03:56:28.6597513Z             {
2026-06-21T03:56:28.6597637Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T03:56:28.6597718Z               "line": 61
2026-06-21T03:56:28.6597803Z             },
2026-06-21T03:56:28.6597881Z             {
2026-06-21T03:56:28.6597999Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:56:28.6598090Z               "line": 111
2026-06-21T03:56:28.6598171Z             },
2026-06-21T03:56:28.6598252Z             {
2026-06-21T03:56:28.6598366Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:56:28.6598467Z               "line": 138
2026-06-21T03:56:28.6598544Z             },
2026-06-21T03:56:28.6598628Z             {
2026-06-21T03:56:28.6598752Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T03:56:28.6598840Z               "line": 148
2026-06-21T03:56:28.6598920Z             },
2026-06-21T03:56:28.6599085Z             {
2026-06-21T03:56:28.6599190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6599274Z               "line": 10021
2026-06-21T03:56:28.6599363Z             }
2026-06-21T03:56:28.6599450Z           ]
2026-06-21T03:56:28.6599527Z         }
2026-06-21T03:56:28.6599613Z       }
2026-06-21T03:56:28.6599683Z     },
2026-06-21T03:56:28.6599769Z     {
2026-06-21T03:56:28.6599851Z       "id": "REQ-SUBNET-6",
2026-06-21T03:56:28.6600537Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T03:56:28.6600642Z       "requiredStages": [
2026-06-21T03:56:28.6600733Z         "impl",
2026-06-21T03:56:28.6600824Z         "unit"
2026-06-21T03:56:28.6600905Z       ],
2026-06-21T03:56:28.6600995Z       "stages": {
2026-06-21T03:56:28.6601077Z         "doc": {
2026-06-21T03:56:28.6601162Z           "complete": false,
2026-06-21T03:56:28.6601258Z           "evidence": []
2026-06-21T03:56:28.6601334Z         },
2026-06-21T03:56:28.6601420Z         "impl": {
2026-06-21T03:56:28.6601500Z           "complete": true,
2026-06-21T03:56:28.6601582Z           "evidence": [
2026-06-21T03:56:28.6601668Z             {
2026-06-21T03:56:28.6601773Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6601867Z               "line": 254
2026-06-21T03:56:28.6601962Z             },
2026-06-21T03:56:28.6602082Z             {
2026-06-21T03:56:28.6602182Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6602397Z               "line": 4475
2026-06-21T03:56:28.6602483Z             },
2026-06-21T03:56:28.6602552Z             {
2026-06-21T03:56:28.6602758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6602849Z               "line": 4492
2026-06-21T03:56:28.6602934Z             },
2026-06-21T03:56:28.6603026Z             {
2026-06-21T03:56:28.6603150Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6603283Z               "line": 4545
2026-06-21T03:56:28.6603374Z             },
2026-06-21T03:56:28.6603459Z             {
2026-06-21T03:56:28.6603554Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6603641Z               "line": 4568
2026-06-21T03:56:28.6603722Z             }
2026-06-21T03:56:28.6603802Z           ]
2026-06-21T03:56:28.6603884Z         },
2026-06-21T03:56:28.6603956Z         "int": {
2026-06-21T03:56:28.6604041Z           "complete": false,
2026-06-21T03:56:28.6604130Z           "evidence": []
2026-06-21T03:56:28.6604215Z         },
2026-06-21T03:56:28.6604297Z         "unit": {
2026-06-21T03:56:28.6604391Z           "complete": true,
2026-06-21T03:56:28.6604471Z           "evidence": [
2026-06-21T03:56:28.6604562Z             {
2026-06-21T03:56:28.6604663Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6604748Z               "line": 10035
2026-06-21T03:56:28.6604833Z             },
2026-06-21T03:56:28.6604910Z             {
2026-06-21T03:56:28.6605015Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6605105Z               "line": 10068
2026-06-21T03:56:28.6605181Z             },
2026-06-21T03:56:28.6605264Z             {
2026-06-21T03:56:28.6605359Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6605453Z               "line": 10077
2026-06-21T03:56:28.6605535Z             }
2026-06-21T03:56:28.6605621Z           ]
2026-06-21T03:56:28.6605711Z         }
2026-06-21T03:56:28.6605782Z       }
2026-06-21T03:56:28.6605874Z     },
2026-06-21T03:56:28.6605954Z     {
2026-06-21T03:56:28.6606049Z       "id": "REQ-SUBNET-7",
2026-06-21T03:56:28.6607662Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T03:56:28.6607758Z       "requiredStages": [
2026-06-21T03:56:28.6607844Z         "impl",
2026-06-21T03:56:28.6607925Z         "unit"
2026-06-21T03:56:28.6608011Z       ],
2026-06-21T03:56:28.6608092Z       "stages": {
2026-06-21T03:56:28.6608173Z         "doc": {
2026-06-21T03:56:28.6608254Z           "complete": false,
2026-06-21T03:56:28.6608340Z           "evidence": []
2026-06-21T03:56:28.6608421Z         },
2026-06-21T03:56:28.6608512Z         "impl": {
2026-06-21T03:56:28.6608607Z           "complete": true,
2026-06-21T03:56:28.6608683Z           "evidence": [
2026-06-21T03:56:28.6608770Z             {
2026-06-21T03:56:28.6608897Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:56:28.6609037Z               "line": 17
2026-06-21T03:56:28.6609118Z             },
2026-06-21T03:56:28.6609188Z             {
2026-06-21T03:56:28.6609312Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6609400Z               "line": 103
2026-06-21T03:56:28.6609480Z             },
2026-06-21T03:56:28.6609569Z             {
2026-06-21T03:56:28.6609683Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T03:56:28.6609774Z               "line": 312
2026-06-21T03:56:28.6609844Z             },
2026-06-21T03:56:28.6609924Z             {
2026-06-21T03:56:28.6610049Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T03:56:28.6610130Z               "line": 131
2026-06-21T03:56:28.6610324Z             },
2026-06-21T03:56:28.6610407Z             {
2026-06-21T03:56:28.6610635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6610721Z               "line": 160
2026-06-21T03:56:28.6610807Z             },
2026-06-21T03:56:28.6610887Z             {
2026-06-21T03:56:28.6611012Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6611088Z               "line": 447
2026-06-21T03:56:28.6611174Z             },
2026-06-21T03:56:28.6611259Z             {
2026-06-21T03:56:28.6611374Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6611465Z               "line": 670
2026-06-21T03:56:28.6611550Z             },
2026-06-21T03:56:28.6611633Z             {
2026-06-21T03:56:28.6611751Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6611832Z               "line": 710
2026-06-21T03:56:28.6611913Z             },
2026-06-21T03:56:28.6611995Z             {
2026-06-21T03:56:28.6612117Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6612214Z               "line": 766
2026-06-21T03:56:28.6612295Z             },
2026-06-21T03:56:28.6612375Z             {
2026-06-21T03:56:28.6612498Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6612584Z               "line": 136
2026-06-21T03:56:28.6612657Z             },
2026-06-21T03:56:28.6612732Z             {
2026-06-21T03:56:28.6612851Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6612923Z               "line": 139
2026-06-21T03:56:28.6613009Z             }
2026-06-21T03:56:28.6613094Z           ]
2026-06-21T03:56:28.6613165Z         },
2026-06-21T03:56:28.6613247Z         "int": {
2026-06-21T03:56:28.6613333Z           "complete": false,
2026-06-21T03:56:28.6613414Z           "evidence": []
2026-06-21T03:56:28.6613490Z         },
2026-06-21T03:56:28.6613576Z         "unit": {
2026-06-21T03:56:28.6613662Z           "complete": true,
2026-06-21T03:56:28.6613757Z           "evidence": [
2026-06-21T03:56:28.6613833Z             {
2026-06-21T03:56:28.6613963Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:56:28.6614048Z               "line": 136
2026-06-21T03:56:28.6614124Z             },
2026-06-21T03:56:28.6614206Z             {
2026-06-21T03:56:28.6614319Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T03:56:28.6614396Z               "line": 156
2026-06-21T03:56:28.6614482Z             },
2026-06-21T03:56:28.6614564Z             {
2026-06-21T03:56:28.6614676Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6614762Z               "line": 987
2026-06-21T03:56:28.6614843Z             },
2026-06-21T03:56:28.6614928Z             {
2026-06-21T03:56:28.6615051Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T03:56:28.6615137Z               "line": 1009
2026-06-21T03:56:28.6615209Z             },
2026-06-21T03:56:28.6615294Z             {
2026-06-21T03:56:28.6615412Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T03:56:28.6615504Z               "line": 1419
2026-06-21T03:56:28.6615590Z             },
2026-06-21T03:56:28.6615670Z             {
2026-06-21T03:56:28.6615795Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T03:56:28.6615876Z               "line": 1036
2026-06-21T03:56:28.6615957Z             }
2026-06-21T03:56:28.6616042Z           ]
2026-06-21T03:56:28.6616148Z         }
2026-06-21T03:56:28.6616248Z       }
2026-06-21T03:56:28.6616337Z     },
2026-06-21T03:56:28.6616444Z     {
2026-06-21T03:56:28.6616533Z       "id": "REQ-SUBNET-8",
2026-06-21T03:56:28.6617615Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T03:56:28.6617791Z       "requiredStages": [
2026-06-21T03:56:28.6617951Z         "impl",
2026-06-21T03:56:28.6618037Z         "unit"
2026-06-21T03:56:28.6618114Z       ],
2026-06-21T03:56:28.6618204Z       "stages": {
2026-06-21T03:56:28.6618284Z         "doc": {
2026-06-21T03:56:28.6618381Z           "complete": false,
2026-06-21T03:56:28.6618457Z           "evidence": []
2026-06-21T03:56:28.6618547Z         },
2026-06-21T03:56:28.6618628Z         "impl": {
2026-06-21T03:56:28.6618710Z           "complete": true,
2026-06-21T03:56:28.6618801Z           "evidence": [
2026-06-21T03:56:28.6618880Z             {
2026-06-21T03:56:28.6619053Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6619134Z               "line": 3835
2026-06-21T03:56:28.6619224Z             },
2026-06-21T03:56:28.6619311Z             {
2026-06-21T03:56:28.6619410Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6619505Z               "line": 3864
2026-06-21T03:56:28.6619587Z             },
2026-06-21T03:56:28.6619669Z             {
2026-06-21T03:56:28.6619772Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6619868Z               "line": 3881
2026-06-21T03:56:28.6619950Z             },
2026-06-21T03:56:28.6620026Z             {
2026-06-21T03:56:28.6620129Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6620210Z               "line": 3904
2026-06-21T03:56:28.6620291Z             },
2026-06-21T03:56:28.6620362Z             {
2026-06-21T03:56:28.6620466Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6620556Z               "line": 4318
2026-06-21T03:56:28.6620633Z             }
2026-06-21T03:56:28.6620714Z           ]
2026-06-21T03:56:28.6620794Z         },
2026-06-21T03:56:28.6620876Z         "int": {
2026-06-21T03:56:28.6620962Z           "complete": false,
2026-06-21T03:56:28.6621052Z           "evidence": []
2026-06-21T03:56:28.6621133Z         },
2026-06-21T03:56:28.6621219Z         "unit": {
2026-06-21T03:56:28.6621310Z           "complete": true,
2026-06-21T03:56:28.6621395Z           "evidence": [
2026-06-21T03:56:28.6621480Z             {
2026-06-21T03:56:28.6621577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6621662Z               "line": 10225
2026-06-21T03:56:28.6621743Z             },
2026-06-21T03:56:28.6621824Z             {
2026-06-21T03:56:28.6621925Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6622010Z               "line": 10241
2026-06-21T03:56:28.6622096Z             }
2026-06-21T03:56:28.6622163Z           ]
2026-06-21T03:56:28.6622249Z         }
2026-06-21T03:56:28.6622329Z       }
2026-06-21T03:56:28.6622406Z     },
2026-06-21T03:56:28.6622493Z     {
2026-06-21T03:56:28.6622574Z       "id": "REQ-TERM-1",
2026-06-21T03:56:28.6622740Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T03:56:28.6622822Z       "requiredStages": [
2026-06-21T03:56:28.6622917Z         "impl",
2026-06-21T03:56:28.6623001Z         "unit"
2026-06-21T03:56:28.6623082Z       ],
2026-06-21T03:56:28.6623173Z       "stages": {
2026-06-21T03:56:28.6623255Z         "doc": {
2026-06-21T03:56:28.6623340Z           "complete": false,
2026-06-21T03:56:28.6623425Z           "evidence": []
2026-06-21T03:56:28.6623507Z         },
2026-06-21T03:56:28.6623598Z         "impl": {
2026-06-21T03:56:28.6623687Z           "complete": true,
2026-06-21T03:56:28.6623769Z           "evidence": [
2026-06-21T03:56:28.6623841Z             {
2026-06-21T03:56:28.6623950Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.6624030Z               "line": 59
2026-06-21T03:56:28.6624118Z             },
2026-06-21T03:56:28.6624198Z             {
2026-06-21T03:56:28.6624303Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T03:56:28.6624389Z               "line": 234
2026-06-21T03:56:28.6624466Z             },
2026-06-21T03:56:28.6624546Z             {
2026-06-21T03:56:28.6624660Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:56:28.6624861Z               "line": 100
2026-06-21T03:56:28.6625037Z             }
2026-06-21T03:56:28.6625115Z           ]
2026-06-21T03:56:28.6625199Z         },
2026-06-21T03:56:28.6625274Z         "int": {
2026-06-21T03:56:28.6625375Z           "complete": false,
2026-06-21T03:56:28.6625465Z           "evidence": []
2026-06-21T03:56:28.6625554Z         },
2026-06-21T03:56:28.6625639Z         "unit": {
2026-06-21T03:56:28.6625730Z           "complete": true,
2026-06-21T03:56:28.6625812Z           "evidence": [
2026-06-21T03:56:28.6625897Z             {
2026-06-21T03:56:28.6626016Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:56:28.6626093Z               "line": 24
2026-06-21T03:56:28.6626178Z             },
2026-06-21T03:56:28.6626259Z             {
2026-06-21T03:56:28.6626370Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T03:56:28.6626459Z               "line": 56
2026-06-21T03:56:28.6626540Z             }
2026-06-21T03:56:28.6626621Z           ]
2026-06-21T03:56:28.6626689Z         }
2026-06-21T03:56:28.6626788Z       }
2026-06-21T03:56:28.6626874Z     },
2026-06-21T03:56:28.6626955Z     {
2026-06-21T03:56:28.6627052Z       "id": "REQ-TERM-2",
2026-06-21T03:56:28.6627227Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T03:56:28.6627319Z       "requiredStages": [
2026-06-21T03:56:28.6627399Z         "impl",
2026-06-21T03:56:28.6627490Z         "unit"
2026-06-21T03:56:28.6627571Z       ],
2026-06-21T03:56:28.6627643Z       "stages": {
2026-06-21T03:56:28.6627728Z         "doc": {
2026-06-21T03:56:28.6627814Z           "complete": false,
2026-06-21T03:56:28.6627895Z           "evidence": []
2026-06-21T03:56:28.6627972Z         },
2026-06-21T03:56:28.6628062Z         "impl": {
2026-06-21T03:56:28.6628146Z           "complete": true,
2026-06-21T03:56:28.6628232Z           "evidence": [
2026-06-21T03:56:28.6628313Z             {
2026-06-21T03:56:28.6628435Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:56:28.6628516Z               "line": 117
2026-06-21T03:56:28.6628607Z             },
2026-06-21T03:56:28.6628688Z             {
2026-06-21T03:56:28.6628802Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T03:56:28.6628883Z               "line": 127
2026-06-21T03:56:28.6629037Z             }
2026-06-21T03:56:28.6629116Z           ]
2026-06-21T03:56:28.6629203Z         },
2026-06-21T03:56:28.6629275Z         "int": {
2026-06-21T03:56:28.6629366Z           "complete": false,
2026-06-21T03:56:28.6629450Z           "evidence": []
2026-06-21T03:56:28.6629522Z         },
2026-06-21T03:56:28.6629609Z         "unit": {
2026-06-21T03:56:28.6629689Z           "complete": true,
2026-06-21T03:56:28.6629775Z           "evidence": [
2026-06-21T03:56:28.6629857Z             {
2026-06-21T03:56:28.6629975Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T03:56:28.6630061Z               "line": 46
2026-06-21T03:56:28.6630142Z             },
2026-06-21T03:56:28.6630229Z             {
2026-06-21T03:56:28.6630332Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T03:56:28.6630423Z               "line": 77
2026-06-21T03:56:28.6630505Z             }
2026-06-21T03:56:28.6630591Z           ]
2026-06-21T03:56:28.6630671Z         }
2026-06-21T03:56:28.6630751Z       }
2026-06-21T03:56:28.6630832Z     },
2026-06-21T03:56:28.6630908Z     {
2026-06-21T03:56:28.6630997Z       "id": "REQ-TERM-3",
2026-06-21T03:56:28.6631135Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T03:56:28.6631231Z       "requiredStages": [
2026-06-21T03:56:28.6631316Z         "impl",
2026-06-21T03:56:28.6631388Z         "unit"
2026-06-21T03:56:28.6631469Z       ],
2026-06-21T03:56:28.6631551Z       "stages": {
2026-06-21T03:56:28.6631636Z         "doc": {
2026-06-21T03:56:28.6631716Z           "complete": false,
2026-06-21T03:56:28.6631809Z           "evidence": []
2026-06-21T03:56:28.6631889Z         },
2026-06-21T03:56:28.6632094Z         "impl": {
2026-06-21T03:56:28.6632189Z           "complete": true,
2026-06-21T03:56:28.6632270Z           "evidence": [
2026-06-21T03:56:28.6632438Z             {
2026-06-21T03:56:28.6632542Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T03:56:28.6632627Z               "line": 71
2026-06-21T03:56:28.6632709Z             }
2026-06-21T03:56:28.6632786Z           ]
2026-06-21T03:56:28.6635698Z         },
2026-06-21T03:56:28.6635806Z         "int": {
2026-06-21T03:56:28.6635906Z           "complete": false,
2026-06-21T03:56:28.6635987Z           "evidence": []
2026-06-21T03:56:28.6636076Z         },
2026-06-21T03:56:28.6636161Z         "unit": {
2026-06-21T03:56:28.6636242Z           "complete": true,
2026-06-21T03:56:28.6636329Z           "evidence": [
2026-06-21T03:56:28.6636409Z             {
2026-06-21T03:56:28.6636543Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T03:56:28.6636629Z               "line": 37
2026-06-21T03:56:28.6636715Z             },
2026-06-21T03:56:28.6636814Z             {
2026-06-21T03:56:28.6636930Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T03:56:28.6637024Z               "line": 67
2026-06-21T03:56:28.6637105Z             }
2026-06-21T03:56:28.6637187Z           ]
2026-06-21T03:56:28.6637268Z         }
2026-06-21T03:56:28.6637349Z       }
2026-06-21T03:56:28.6637439Z     },
2026-06-21T03:56:28.6637515Z     {
2026-06-21T03:56:28.6637597Z       "id": "REQ-TERM-4",
2026-06-21T03:56:28.6638064Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T03:56:28.6638160Z       "requiredStages": [
2026-06-21T03:56:28.6638241Z         "impl",
2026-06-21T03:56:28.6638321Z         "unit",
2026-06-21T03:56:28.6638407Z         "int"
2026-06-21T03:56:28.6638489Z       ],
2026-06-21T03:56:28.6638571Z       "stages": {
2026-06-21T03:56:28.6638650Z         "doc": {
2026-06-21T03:56:28.6638749Z           "complete": false,
2026-06-21T03:56:28.6638835Z           "evidence": []
2026-06-21T03:56:28.6638920Z         },
2026-06-21T03:56:28.6639095Z         "impl": {
2026-06-21T03:56:28.6639181Z           "complete": true,
2026-06-21T03:56:28.6639273Z           "evidence": [
2026-06-21T03:56:28.6639347Z             {
2026-06-21T03:56:28.6639463Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6639544Z               "line": 37
2026-06-21T03:56:28.6639625Z             },
2026-06-21T03:56:28.6639710Z             {
2026-06-21T03:56:28.6639826Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6639911Z               "line": 25
2026-06-21T03:56:28.6639982Z             },
2026-06-21T03:56:28.6640063Z             {
2026-06-21T03:56:28.6640179Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6640269Z               "line": 114
2026-06-21T03:56:28.6640349Z             },
2026-06-21T03:56:28.6640431Z             {
2026-06-21T03:56:28.6640545Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6640626Z               "line": 267
2026-06-21T03:56:28.6640712Z             },
2026-06-21T03:56:28.6640794Z             {
2026-06-21T03:56:28.6640902Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6640988Z               "line": 289
2026-06-21T03:56:28.6641070Z             },
2026-06-21T03:56:28.6641151Z             {
2026-06-21T03:56:28.6641259Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6641349Z               "line": 307
2026-06-21T03:56:28.6641431Z             },
2026-06-21T03:56:28.6641510Z             {
2026-06-21T03:56:28.6641624Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.6641705Z               "line": 33
2026-06-21T03:56:28.6641782Z             },
2026-06-21T03:56:28.6641862Z             {
2026-06-21T03:56:28.6641981Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6642200Z               "line": 52
2026-06-21T03:56:28.6642286Z             },
2026-06-21T03:56:28.6642369Z             {
2026-06-21T03:56:28.6642572Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6642664Z               "line": 180
2026-06-21T03:56:28.6642745Z             },
2026-06-21T03:56:28.6642826Z             {
2026-06-21T03:56:28.6642944Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6643027Z               "line": 190
2026-06-21T03:56:28.6643111Z             },
2026-06-21T03:56:28.6643192Z             {
2026-06-21T03:56:28.6643303Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6643384Z               "line": 250
2026-06-21T03:56:28.6643469Z             },
2026-06-21T03:56:28.6643550Z             {
2026-06-21T03:56:28.6643661Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6643750Z               "line": 284
2026-06-21T03:56:28.6643822Z             },
2026-06-21T03:56:28.6643909Z             {
2026-06-21T03:56:28.6644014Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6644107Z               "line": 295
2026-06-21T03:56:28.6644192Z             },
2026-06-21T03:56:28.6644274Z             {
2026-06-21T03:56:28.6644375Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6644450Z               "line": 1193
2026-06-21T03:56:28.6644536Z             }
2026-06-21T03:56:28.6644613Z           ]
2026-06-21T03:56:28.6644689Z         },
2026-06-21T03:56:28.6644774Z         "int": {
2026-06-21T03:56:28.6644860Z           "complete": true,
2026-06-21T03:56:28.6644942Z           "evidence": [
2026-06-21T03:56:28.6645023Z             {
2026-06-21T03:56:28.6645142Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T03:56:28.6645228Z               "line": 18
2026-06-21T03:56:28.6645304Z             }
2026-06-21T03:56:28.6645385Z           ]
2026-06-21T03:56:28.6645456Z         },
2026-06-21T03:56:28.6645528Z         "unit": {
2026-06-21T03:56:28.6645638Z           "complete": true,
2026-06-21T03:56:28.6645728Z           "evidence": [
2026-06-21T03:56:28.6645809Z             {
2026-06-21T03:56:28.6645924Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6646014Z               "line": 364
2026-06-21T03:56:28.6646095Z             },
2026-06-21T03:56:28.6646182Z             {
2026-06-21T03:56:28.6646309Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6646409Z               "line": 416
2026-06-21T03:56:28.6646490Z             },
2026-06-21T03:56:28.6646571Z             {
2026-06-21T03:56:28.6646688Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6646769Z               "line": 426
2026-06-21T03:56:28.6646851Z             },
2026-06-21T03:56:28.6646932Z             {
2026-06-21T03:56:28.6647041Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6647117Z               "line": 436
2026-06-21T03:56:28.6647204Z             },
2026-06-21T03:56:28.6647284Z             {
2026-06-21T03:56:28.6647388Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6647481Z               "line": 456
2026-06-21T03:56:28.6647561Z             },
2026-06-21T03:56:28.6647646Z             {
2026-06-21T03:56:28.6647756Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6647847Z               "line": 478
2026-06-21T03:56:28.6647933Z             },
2026-06-21T03:56:28.6648013Z             {
2026-06-21T03:56:28.6648120Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6648200Z               "line": 491
2026-06-21T03:56:28.6648285Z             },
2026-06-21T03:56:28.6648366Z             {
2026-06-21T03:56:28.6648477Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T03:56:28.6648562Z               "line": 502
2026-06-21T03:56:28.6648629Z             },
2026-06-21T03:56:28.6648715Z             {
2026-06-21T03:56:28.6648825Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.6649069Z               "line": 108
2026-06-21T03:56:28.6649154Z             },
2026-06-21T03:56:28.6649362Z             {
2026-06-21T03:56:28.6649480Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:56:28.6649556Z               "line": 119
2026-06-21T03:56:28.6649645Z             },
2026-06-21T03:56:28.6649722Z             {
2026-06-21T03:56:28.6649823Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:56:28.6649912Z               "line": 127
2026-06-21T03:56:28.6649989Z             },
2026-06-21T03:56:28.6650071Z             {
2026-06-21T03:56:28.6650185Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6650265Z               "line": 474
2026-06-21T03:56:28.6650348Z             },
2026-06-21T03:56:28.6650424Z             {
2026-06-21T03:56:28.6650542Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6650628Z               "line": 501
2026-06-21T03:56:28.6650715Z             },
2026-06-21T03:56:28.6650790Z             {
2026-06-21T03:56:28.6650899Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6650992Z               "line": 520
2026-06-21T03:56:28.6651068Z             },
2026-06-21T03:56:28.6651152Z             {
2026-06-21T03:56:28.6651258Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6651344Z               "line": 535
2026-06-21T03:56:28.6651425Z             },
2026-06-21T03:56:28.6651501Z             {
2026-06-21T03:56:28.6651612Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6651692Z               "line": 561
2026-06-21T03:56:28.6651777Z             },
2026-06-21T03:56:28.6651857Z             {
2026-06-21T03:56:28.6651962Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6652047Z               "line": 581
2026-06-21T03:56:28.6652126Z             },
2026-06-21T03:56:28.6652212Z             {
2026-06-21T03:56:28.6652328Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6652432Z               "line": 591
2026-06-21T03:56:28.6652508Z             },
2026-06-21T03:56:28.6652599Z             {
2026-06-21T03:56:28.6652704Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6652794Z               "line": 683
2026-06-21T03:56:28.6652870Z             },
2026-06-21T03:56:28.6652948Z             {
2026-06-21T03:56:28.6653062Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6653147Z               "line": 885
2026-06-21T03:56:28.6653229Z             },
2026-06-21T03:56:28.6653314Z             {
2026-06-21T03:56:28.6653414Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6653500Z               "line": 9792
2026-06-21T03:56:28.6653573Z             }
2026-06-21T03:56:28.6653648Z           ]
2026-06-21T03:56:28.6653729Z         }
2026-06-21T03:56:28.6653805Z       }
2026-06-21T03:56:28.6653882Z     },
2026-06-21T03:56:28.6653958Z     {
2026-06-21T03:56:28.6654058Z       "id": "REQ-TERM-5",
2026-06-21T03:56:28.6655545Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T03:56:28.6655649Z       "requiredStages": [
2026-06-21T03:56:28.6655725Z         "doc",
2026-06-21T03:56:28.6655808Z         "impl",
2026-06-21T03:56:28.6655883Z         "unit",
2026-06-21T03:56:28.6655964Z         "int"
2026-06-21T03:56:28.6656049Z       ],
2026-06-21T03:56:28.6656127Z       "stages": {
2026-06-21T03:56:28.6656212Z         "doc": {
2026-06-21T03:56:28.6656408Z           "complete": true,
2026-06-21T03:56:28.6656499Z           "evidence": [
2026-06-21T03:56:28.6656675Z             {
2026-06-21T03:56:28.6656776Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.6656860Z               "line": 234
2026-06-21T03:56:28.6656936Z             }
2026-06-21T03:56:28.6657016Z           ]
2026-06-21T03:56:28.6657089Z         },
2026-06-21T03:56:28.6657168Z         "impl": {
2026-06-21T03:56:28.6657258Z           "complete": true,
2026-06-21T03:56:28.6657338Z           "evidence": [
2026-06-21T03:56:28.6657420Z             {
2026-06-21T03:56:28.6657529Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6657620Z               "line": 75
2026-06-21T03:56:28.6657706Z             },
2026-06-21T03:56:28.6657788Z             {
2026-06-21T03:56:28.6657906Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6657982Z               "line": 131
2026-06-21T03:56:28.6658064Z             },
2026-06-21T03:56:28.6658150Z             {
2026-06-21T03:56:28.6658259Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6658341Z               "line": 22
2026-06-21T03:56:28.6658421Z             },
2026-06-21T03:56:28.6658502Z             {
2026-06-21T03:56:28.6658607Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6658685Z               "line": 87
2026-06-21T03:56:28.6658764Z             },
2026-06-21T03:56:28.6658845Z             {
2026-06-21T03:56:28.6659028Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T03:56:28.6659108Z               "line": 30
2026-06-21T03:56:28.6659189Z             },
2026-06-21T03:56:28.6659266Z             {
2026-06-21T03:56:28.6659385Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6659465Z               "line": 103
2026-06-21T03:56:28.6659546Z             },
2026-06-21T03:56:28.6659629Z             {
2026-06-21T03:56:28.6659742Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6659831Z               "line": 167
2026-06-21T03:56:28.6659912Z             },
2026-06-21T03:56:28.6659998Z             {
2026-06-21T03:56:28.6660116Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6660196Z               "line": 434
2026-06-21T03:56:28.6660278Z             },
2026-06-21T03:56:28.6660359Z             {
2026-06-21T03:56:28.6660463Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6660549Z               "line": 5650
2026-06-21T03:56:28.6660631Z             },
2026-06-21T03:56:28.6660707Z             {
2026-06-21T03:56:28.6660806Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6660893Z               "line": 5957
2026-06-21T03:56:28.6660979Z             }
2026-06-21T03:56:28.6661060Z           ]
2026-06-21T03:56:28.6661140Z         },
2026-06-21T03:56:28.6661222Z         "int": {
2026-06-21T03:56:28.6661299Z           "complete": true,
2026-06-21T03:56:28.6661389Z           "evidence": [
2026-06-21T03:56:28.6661474Z             {
2026-06-21T03:56:28.6661618Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:56:28.6661703Z               "line": 17
2026-06-21T03:56:28.6661779Z             }
2026-06-21T03:56:28.6661862Z           ]
2026-06-21T03:56:28.6661938Z         },
2026-06-21T03:56:28.6662027Z         "unit": {
2026-06-21T03:56:28.6662113Z           "complete": true,
2026-06-21T03:56:28.6662196Z           "evidence": [
2026-06-21T03:56:28.6662276Z             {
2026-06-21T03:56:28.6662379Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6662469Z               "line": 375
2026-06-21T03:56:28.6662541Z             },
2026-06-21T03:56:28.6662626Z             {
2026-06-21T03:56:28.6662729Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6662801Z               "line": 162
2026-06-21T03:56:28.6662883Z             },
2026-06-21T03:56:28.6662964Z             {
2026-06-21T03:56:28.6663073Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6663264Z               "line": 179
2026-06-21T03:56:28.6663345Z             },
2026-06-21T03:56:28.6663513Z             {
2026-06-21T03:56:28.6663608Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6663692Z               "line": 201
2026-06-21T03:56:28.6663775Z             },
2026-06-21T03:56:28.6663856Z             {
2026-06-21T03:56:28.6663956Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6664041Z               "line": 212
2026-06-21T03:56:28.6664123Z             },
2026-06-21T03:56:28.6664204Z             {
2026-06-21T03:56:28.6664308Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T03:56:28.6664389Z               "line": 223
2026-06-21T03:56:28.6664462Z             },
2026-06-21T03:56:28.6664532Z             {
2026-06-21T03:56:28.6664646Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6664724Z               "line": 1525
2026-06-21T03:56:28.6664810Z             },
2026-06-21T03:56:28.6664894Z             {
2026-06-21T03:56:28.6665010Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6665096Z               "line": 1568
2026-06-21T03:56:28.6665176Z             },
2026-06-21T03:56:28.6665246Z             {
2026-06-21T03:56:28.6665351Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6665433Z               "line": 606
2026-06-21T03:56:28.6665519Z             },
2026-06-21T03:56:28.6665599Z             {
2026-06-21T03:56:28.6665704Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6665795Z               "line": 634
2026-06-21T03:56:28.6665871Z             },
2026-06-21T03:56:28.6665957Z             {
2026-06-21T03:56:28.6666058Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6666143Z               "line": 646
2026-06-21T03:56:28.6666223Z             },
2026-06-21T03:56:28.6666295Z             {
2026-06-21T03:56:28.6666411Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6666501Z               "line": 669
2026-06-21T03:56:28.6666581Z             },
2026-06-21T03:56:28.6666668Z             {
2026-06-21T03:56:28.6666767Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6666848Z               "line": 8503
2026-06-21T03:56:28.6666930Z             },
2026-06-21T03:56:28.6667012Z             {
2026-06-21T03:56:28.6667110Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6667201Z               "line": 8561
2026-06-21T03:56:28.6667278Z             }
2026-06-21T03:56:28.6667360Z           ]
2026-06-21T03:56:28.6667434Z         }
2026-06-21T03:56:28.6667515Z       }
2026-06-21T03:56:28.6667601Z     },
2026-06-21T03:56:28.6667682Z     {
2026-06-21T03:56:28.6667775Z       "id": "REQ-TERM-6",
2026-06-21T03:56:28.6668857Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T03:56:28.6669044Z       "requiredStages": [
2026-06-21T03:56:28.6669134Z         "impl",
2026-06-21T03:56:28.6669215Z         "unit",
2026-06-21T03:56:28.6669306Z         "int"
2026-06-21T03:56:28.6669373Z       ],
2026-06-21T03:56:28.6669458Z       "stages": {
2026-06-21T03:56:28.6669545Z         "doc": {
2026-06-21T03:56:28.6669625Z           "complete": false,
2026-06-21T03:56:28.6669720Z           "evidence": []
2026-06-21T03:56:28.6669797Z         },
2026-06-21T03:56:28.6669884Z         "impl": {
2026-06-21T03:56:28.6669964Z           "complete": true,
2026-06-21T03:56:28.6670040Z           "evidence": [
2026-06-21T03:56:28.6670126Z             {
2026-06-21T03:56:28.6670237Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6670429Z               "line": 132
2026-06-21T03:56:28.6670516Z             },
2026-06-21T03:56:28.6670596Z             {
2026-06-21T03:56:28.6670799Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6670891Z               "line": 187
2026-06-21T03:56:28.6670971Z             },
2026-06-21T03:56:28.6671052Z             {
2026-06-21T03:56:28.6671168Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6671243Z               "line": 17
2026-06-21T03:56:28.6671328Z             },
2026-06-21T03:56:28.6671399Z             {
2026-06-21T03:56:28.6671515Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6671596Z               "line": 104
2026-06-21T03:56:28.6671672Z             },
2026-06-21T03:56:28.6671763Z             {
2026-06-21T03:56:28.6671873Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6671958Z               "line": 319
2026-06-21T03:56:28.6672034Z             },
2026-06-21T03:56:28.6672107Z             {
2026-06-21T03:56:28.6672225Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6672316Z               "line": 396
2026-06-21T03:56:28.6672397Z             }
2026-06-21T03:56:28.6672479Z           ]
2026-06-21T03:56:28.6672563Z         },
2026-06-21T03:56:28.6672645Z         "int": {
2026-06-21T03:56:28.6672727Z           "complete": true,
2026-06-21T03:56:28.6672817Z           "evidence": [
2026-06-21T03:56:28.6672888Z             {
2026-06-21T03:56:28.6673025Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:56:28.6673106Z               "line": 18
2026-06-21T03:56:28.6673191Z             }
2026-06-21T03:56:28.6673266Z           ]
2026-06-21T03:56:28.6673347Z         },
2026-06-21T03:56:28.6673423Z         "unit": {
2026-06-21T03:56:28.6673510Z           "complete": true,
2026-06-21T03:56:28.6673595Z           "evidence": [
2026-06-21T03:56:28.6673662Z             {
2026-06-21T03:56:28.6673787Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6673872Z               "line": 135
2026-06-21T03:56:28.6673952Z             },
2026-06-21T03:56:28.6674044Z             {
2026-06-21T03:56:28.6674153Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6674243Z               "line": 150
2026-06-21T03:56:28.6674325Z             },
2026-06-21T03:56:28.6674406Z             {
2026-06-21T03:56:28.6674506Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6674596Z               "line": 166
2026-06-21T03:56:28.6674679Z             },
2026-06-21T03:56:28.6674759Z             {
2026-06-21T03:56:28.6674878Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T03:56:28.6674959Z               "line": 257
2026-06-21T03:56:28.6675041Z             },
2026-06-21T03:56:28.6675126Z             {
2026-06-21T03:56:28.6675235Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6675322Z               "line": 738
2026-06-21T03:56:28.6675393Z             },
2026-06-21T03:56:28.6675478Z             {
2026-06-21T03:56:28.6675594Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6675680Z               "line": 759
2026-06-21T03:56:28.6675760Z             },
2026-06-21T03:56:28.6675840Z             {
2026-06-21T03:56:28.6675959Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T03:56:28.6676046Z               "line": 726
2026-06-21T03:56:28.6676131Z             }
2026-06-21T03:56:28.6676212Z           ]
2026-06-21T03:56:28.6676298Z         }
2026-06-21T03:56:28.6676379Z       }
2026-06-21T03:56:28.6676459Z     },
2026-06-21T03:56:28.6676545Z     {
2026-06-21T03:56:28.6676628Z       "id": "REQ-TERM-7",
2026-06-21T03:56:28.6677747Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T03:56:28.6677990Z       "requiredStages": [
2026-06-21T03:56:28.6678066Z         "impl",
2026-06-21T03:56:28.6678146Z         "unit",
2026-06-21T03:56:28.6678228Z         "int"
2026-06-21T03:56:28.6678303Z       ],
2026-06-21T03:56:28.6678388Z       "stages": {
2026-06-21T03:56:28.6678473Z         "doc": {
2026-06-21T03:56:28.6678565Z           "complete": false,
2026-06-21T03:56:28.6678650Z           "evidence": []
2026-06-21T03:56:28.6678731Z         },
2026-06-21T03:56:28.6678807Z         "impl": {
2026-06-21T03:56:28.6678898Z           "complete": true,
2026-06-21T03:56:28.6679045Z           "evidence": [
2026-06-21T03:56:28.6679127Z             {
2026-06-21T03:56:28.6679246Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6679341Z               "line": 133
2026-06-21T03:56:28.6679422Z             },
2026-06-21T03:56:28.6679509Z             {
2026-06-21T03:56:28.6679623Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6679708Z               "line": 326
2026-06-21T03:56:28.6679785Z             },
2026-06-21T03:56:28.6679871Z             {
2026-06-21T03:56:28.6679970Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:56:28.6680061Z               "line": 15
2026-06-21T03:56:28.6680139Z             },
2026-06-21T03:56:28.6680214Z             {
2026-06-21T03:56:28.6680309Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:56:28.6680386Z               "line": 32
2026-06-21T03:56:28.6680473Z             },
2026-06-21T03:56:28.6680552Z             {
2026-06-21T03:56:28.6680657Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.6680739Z               "line": 49
2026-06-21T03:56:28.6680820Z             },
2026-06-21T03:56:28.6680900Z             {
2026-06-21T03:56:28.6681013Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6681100Z               "line": 286
2026-06-21T03:56:28.6681175Z             },
2026-06-21T03:56:28.6681264Z             {
2026-06-21T03:56:28.6681378Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6681465Z               "line": 320
2026-06-21T03:56:28.6681545Z             }
2026-06-21T03:56:28.6681626Z           ]
2026-06-21T03:56:28.6681713Z         },
2026-06-21T03:56:28.6681794Z         "int": {
2026-06-21T03:56:28.6681888Z           "complete": true,
2026-06-21T03:56:28.6681974Z           "evidence": [
2026-06-21T03:56:28.6682057Z             {
2026-06-21T03:56:28.6682194Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T03:56:28.6682270Z               "line": 19
2026-06-21T03:56:28.6682357Z             }
2026-06-21T03:56:28.6682428Z           ]
2026-06-21T03:56:28.6682509Z         },
2026-06-21T03:56:28.6682594Z         "unit": {
2026-06-21T03:56:28.6682682Z           "complete": true,
2026-06-21T03:56:28.6682766Z           "evidence": [
2026-06-21T03:56:28.6682852Z             {
2026-06-21T03:56:28.6682967Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6683058Z               "line": 455
2026-06-21T03:56:28.6683147Z             },
2026-06-21T03:56:28.6683215Z             {
2026-06-21T03:56:28.6683331Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T03:56:28.6683429Z               "line": 568
2026-06-21T03:56:28.6683500Z             },
2026-06-21T03:56:28.6683580Z             {
2026-06-21T03:56:28.6683680Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:56:28.6683760Z               "line": 58
2026-06-21T03:56:28.6683836Z             },
2026-06-21T03:56:28.6683921Z             {
2026-06-21T03:56:28.6684023Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:56:28.6684103Z               "line": 77
2026-06-21T03:56:28.6684183Z             },
2026-06-21T03:56:28.6684265Z             {
2026-06-21T03:56:28.6684375Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T03:56:28.6684570Z               "line": 87
2026-06-21T03:56:28.6684651Z             },
2026-06-21T03:56:28.6684846Z             {
2026-06-21T03:56:28.6684957Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T03:56:28.6685076Z               "line": 94
2026-06-21T03:56:28.6685156Z             },
2026-06-21T03:56:28.6685244Z             {
2026-06-21T03:56:28.6685362Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6685452Z               "line": 691
2026-06-21T03:56:28.6685534Z             },
2026-06-21T03:56:28.6685615Z             {
2026-06-21T03:56:28.6685734Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T03:56:28.6685815Z               "line": 716
2026-06-21T03:56:28.6685897Z             }
2026-06-21T03:56:28.6685977Z           ]
2026-06-21T03:56:28.6686068Z         }
2026-06-21T03:56:28.6686149Z       }
2026-06-21T03:56:28.6686230Z     },
2026-06-21T03:56:28.6686315Z     {
2026-06-21T03:56:28.6686409Z       "id": "REQ-UPD-1",
2026-06-21T03:56:28.6686534Z       "title": "Peer-propagated update over P2P",
2026-06-21T03:56:28.6686630Z       "requiredStages": [
2026-06-21T03:56:28.6686714Z         "impl",
2026-06-21T03:56:28.6686800Z         "unit",
2026-06-21T03:56:28.6686883Z         "int"
2026-06-21T03:56:28.6686964Z       ],
2026-06-21T03:56:28.6687043Z       "stages": {
2026-06-21T03:56:28.6687130Z         "doc": {
2026-06-21T03:56:28.6687216Z           "complete": false,
2026-06-21T03:56:28.6687307Z           "evidence": []
2026-06-21T03:56:28.6687377Z         },
2026-06-21T03:56:28.6687464Z         "impl": {
2026-06-21T03:56:28.6687555Z           "complete": true,
2026-06-21T03:56:28.6687640Z           "evidence": [
2026-06-21T03:56:28.6687725Z             {
2026-06-21T03:56:28.6687846Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6687925Z               "line": 28
2026-06-21T03:56:28.6688011Z             },
2026-06-21T03:56:28.6688089Z             {
2026-06-21T03:56:28.6688213Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6688293Z               "line": 103
2026-06-21T03:56:28.6688389Z             },
2026-06-21T03:56:28.6688471Z             {
2026-06-21T03:56:28.6688588Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6688673Z               "line": 342
2026-06-21T03:56:28.6688755Z             },
2026-06-21T03:56:28.6688840Z             {
2026-06-21T03:56:28.6689009Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6689110Z               "line": 22
2026-06-21T03:56:28.6689188Z             },
2026-06-21T03:56:28.6689281Z             {
2026-06-21T03:56:28.6689405Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6689491Z               "line": 207
2026-06-21T03:56:28.6689596Z             },
2026-06-21T03:56:28.6689687Z             {
2026-06-21T03:56:28.6689816Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6689901Z               "line": 283
2026-06-21T03:56:28.6689987Z             },
2026-06-21T03:56:28.6690074Z             {
2026-06-21T03:56:28.6690188Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6690278Z               "line": 340
2026-06-21T03:56:28.6690360Z             },
2026-06-21T03:56:28.6690445Z             {
2026-06-21T03:56:28.6690545Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6690631Z               "line": 37
2026-06-21T03:56:28.6690718Z             }
2026-06-21T03:56:28.6690788Z           ]
2026-06-21T03:56:28.6690874Z         },
2026-06-21T03:56:28.6690956Z         "int": {
2026-06-21T03:56:28.6691047Z           "complete": true,
2026-06-21T03:56:28.6691136Z           "evidence": [
2026-06-21T03:56:28.6691222Z             {
2026-06-21T03:56:28.6691348Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T03:56:28.6691422Z               "line": 207
2026-06-21T03:56:28.6691507Z             },
2026-06-21T03:56:28.6691693Z             {
2026-06-21T03:56:28.6691810Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T03:56:28.6691977Z               "line": 1082
2026-06-21T03:56:28.6692064Z             }
2026-06-21T03:56:28.6692148Z           ]
2026-06-21T03:56:28.6692229Z         },
2026-06-21T03:56:28.6692312Z         "unit": {
2026-06-21T03:56:28.6692388Z           "complete": true,
2026-06-21T03:56:28.6692482Z           "evidence": [
2026-06-21T03:56:28.6692559Z             {
2026-06-21T03:56:28.6692683Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6692773Z               "line": 490
2026-06-21T03:56:28.6692854Z             },
2026-06-21T03:56:28.6692932Z             {
2026-06-21T03:56:28.6693045Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6693131Z               "line": 616
2026-06-21T03:56:28.6693213Z             },
2026-06-21T03:56:28.6693289Z             {
2026-06-21T03:56:28.6693417Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.6693513Z               "line": 277
2026-06-21T03:56:28.6693590Z             },
2026-06-21T03:56:28.6693674Z             {
2026-06-21T03:56:28.6693784Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6693866Z               "line": 124
2026-06-21T03:56:28.6693952Z             },
2026-06-21T03:56:28.6694036Z             {
2026-06-21T03:56:28.6694145Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6694241Z               "line": 200
2026-06-21T03:56:28.6694311Z             }
2026-06-21T03:56:28.6694382Z           ]
2026-06-21T03:56:28.6694467Z         }
2026-06-21T03:56:28.6694535Z       }
2026-06-21T03:56:28.6694621Z     },
2026-06-21T03:56:28.6694701Z     {
2026-06-21T03:56:28.6694792Z       "id": "REQ-UPD-2",
2026-06-21T03:56:28.6694935Z       "title": "All binaries signature-verified before handoff",
2026-06-21T03:56:28.6695020Z       "requiredStages": [
2026-06-21T03:56:28.6695106Z         "impl",
2026-06-21T03:56:28.6695188Z         "unit"
2026-06-21T03:56:28.6695274Z       ],
2026-06-21T03:56:28.6695354Z       "stages": {
2026-06-21T03:56:28.6695450Z         "doc": {
2026-06-21T03:56:28.6695531Z           "complete": false,
2026-06-21T03:56:28.6695612Z           "evidence": []
2026-06-21T03:56:28.6695693Z         },
2026-06-21T03:56:28.6695774Z         "impl": {
2026-06-21T03:56:28.6695869Z           "complete": true,
2026-06-21T03:56:28.6695955Z           "evidence": [
2026-06-21T03:56:28.6696036Z             {
2026-06-21T03:56:28.6696166Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6696260Z               "line": 343
2026-06-21T03:56:28.6696360Z             },
2026-06-21T03:56:28.6696443Z             {
2026-06-21T03:56:28.6696560Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6696647Z               "line": 476
2026-06-21T03:56:28.6696733Z             },
2026-06-21T03:56:28.6696814Z             {
2026-06-21T03:56:28.6696922Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6697012Z               "line": 29
2026-06-21T03:56:28.6697099Z             },
2026-06-21T03:56:28.6697185Z             {
2026-06-21T03:56:28.6697284Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6697370Z               "line": 271
2026-06-21T03:56:28.6697452Z             },
2026-06-21T03:56:28.6697538Z             {
2026-06-21T03:56:28.6697661Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6697743Z               "line": 288
2026-06-21T03:56:28.6697824Z             },
2026-06-21T03:56:28.6697895Z             {
2026-06-21T03:56:28.6698009Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6698091Z               "line": 408
2026-06-21T03:56:28.6698171Z             },
2026-06-21T03:56:28.6698252Z             {
2026-06-21T03:56:28.6698363Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6698453Z               "line": 558
2026-06-21T03:56:28.6698615Z             },
2026-06-21T03:56:28.6698706Z             {
2026-06-21T03:56:28.6698810Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6699050Z               "line": 155
2026-06-21T03:56:28.6699134Z             }
2026-06-21T03:56:28.6699215Z           ]
2026-06-21T03:56:28.6701836Z         },
2026-06-21T03:56:28.6701946Z         "int": {
2026-06-21T03:56:28.6702043Z           "complete": false,
2026-06-21T03:56:28.6702133Z           "evidence": []
2026-06-21T03:56:28.6702220Z         },
2026-06-21T03:56:28.6702305Z         "unit": {
2026-06-21T03:56:28.6702403Z           "complete": true,
2026-06-21T03:56:28.6702485Z           "evidence": [
2026-06-21T03:56:28.6702571Z             {
2026-06-21T03:56:28.6702685Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6702770Z               "line": 750
2026-06-21T03:56:28.6702853Z             },
2026-06-21T03:56:28.6702938Z             {
2026-06-21T03:56:28.6703056Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6703158Z               "line": 811
2026-06-21T03:56:28.6703238Z             },
2026-06-21T03:56:28.6703333Z             {
2026-06-21T03:56:28.6703448Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6703530Z               "line": 825
2026-06-21T03:56:28.6703615Z             },
2026-06-21T03:56:28.6703696Z             {
2026-06-21T03:56:28.6703797Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6703882Z               "line": 841
2026-06-21T03:56:28.6703963Z             },
2026-06-21T03:56:28.6704044Z             {
2026-06-21T03:56:28.6704145Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6704225Z               "line": 932
2026-06-21T03:56:28.6704306Z             },
2026-06-21T03:56:28.6704388Z             {
2026-06-21T03:56:28.6704498Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6704577Z               "line": 414
2026-06-21T03:56:28.6704662Z             },
2026-06-21T03:56:28.6704739Z             {
2026-06-21T03:56:28.6704852Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6704932Z               "line": 427
2026-06-21T03:56:28.6705012Z             },
2026-06-21T03:56:28.6705080Z             {
2026-06-21T03:56:28.6705214Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.6705299Z               "line": 410
2026-06-21T03:56:28.6705376Z             }
2026-06-21T03:56:28.6705452Z           ]
2026-06-21T03:56:28.6705529Z         }
2026-06-21T03:56:28.6705609Z       }
2026-06-21T03:56:28.6705691Z     },
2026-06-21T03:56:28.6705772Z     {
2026-06-21T03:56:28.6705867Z       "id": "REQ-UPD-3",
2026-06-21T03:56:28.6706035Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T03:56:28.6706124Z       "requiredStages": [
2026-06-21T03:56:28.6706196Z         "impl",
2026-06-21T03:56:28.6706281Z         "unit",
2026-06-21T03:56:28.6706359Z         "int"
2026-06-21T03:56:28.6706458Z       ],
2026-06-21T03:56:28.6706548Z       "stages": {
2026-06-21T03:56:28.6706630Z         "doc": {
2026-06-21T03:56:28.6706726Z           "complete": false,
2026-06-21T03:56:28.6706806Z           "evidence": []
2026-06-21T03:56:28.6706887Z         },
2026-06-21T03:56:28.6706969Z         "impl": {
2026-06-21T03:56:28.6707059Z           "complete": true,
2026-06-21T03:56:28.6707149Z           "evidence": [
2026-06-21T03:56:28.6707231Z             {
2026-06-21T03:56:28.6707356Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6707435Z               "line": 40
2026-06-21T03:56:28.6707516Z             },
2026-06-21T03:56:28.6707597Z             {
2026-06-21T03:56:28.6707712Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6707807Z               "line": 87
2026-06-21T03:56:28.6707887Z             },
2026-06-21T03:56:28.6707969Z             {
2026-06-21T03:56:28.6708074Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T03:56:28.6708298Z               "line": 1042
2026-06-21T03:56:28.6708384Z             },
2026-06-21T03:56:28.6708546Z             {
2026-06-21T03:56:28.6708665Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T03:56:28.6708741Z               "line": 1843
2026-06-21T03:56:28.6708826Z             },
2026-06-21T03:56:28.6708904Z             {
2026-06-21T03:56:28.6709094Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6709180Z               "line": 26
2026-06-21T03:56:28.6709262Z             },
2026-06-21T03:56:28.6709361Z             {
2026-06-21T03:56:28.6709470Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6709558Z               "line": 114
2026-06-21T03:56:28.6709633Z             },
2026-06-21T03:56:28.6709713Z             {
2026-06-21T03:56:28.6709817Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6709899Z               "line": 246
2026-06-21T03:56:28.6709983Z             },
2026-06-21T03:56:28.6710063Z             {
2026-06-21T03:56:28.6710158Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6710250Z               "line": 2442
2026-06-21T03:56:28.6710335Z             }
2026-06-21T03:56:28.6710406Z           ]
2026-06-21T03:56:28.6710487Z         },
2026-06-21T03:56:28.6710570Z         "int": {
2026-06-21T03:56:28.6710659Z           "complete": true,
2026-06-21T03:56:28.6710744Z           "evidence": [
2026-06-21T03:56:28.6710827Z             {
2026-06-21T03:56:28.6710950Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T03:56:28.6711026Z               "line": 58
2026-06-21T03:56:28.6711108Z             }
2026-06-21T03:56:28.6711180Z           ]
2026-06-21T03:56:28.6711260Z         },
2026-06-21T03:56:28.6711341Z         "unit": {
2026-06-21T03:56:28.6711427Z           "complete": true,
2026-06-21T03:56:28.6711513Z           "evidence": [
2026-06-21T03:56:28.6711589Z             {
2026-06-21T03:56:28.6711698Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6711781Z               "line": 532
2026-06-21T03:56:28.6711862Z             },
2026-06-21T03:56:28.6711956Z             {
2026-06-21T03:56:28.6712071Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6712157Z               "line": 585
2026-06-21T03:56:28.6712233Z             },
2026-06-21T03:56:28.6712319Z             {
2026-06-21T03:56:28.6712425Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6712510Z               "line": 653
2026-06-21T03:56:28.6712590Z             },
2026-06-21T03:56:28.6712670Z             {
2026-06-21T03:56:28.6712789Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T03:56:28.6712874Z               "line": 1102
2026-06-21T03:56:28.6712954Z             },
2026-06-21T03:56:28.6713035Z             {
2026-06-21T03:56:28.6713146Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6713226Z               "line": 271
2026-06-21T03:56:28.6713307Z             },
2026-06-21T03:56:28.6713393Z             {
2026-06-21T03:56:28.6713493Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6713583Z               "line": 295
2026-06-21T03:56:28.6713660Z             },
2026-06-21T03:56:28.6713742Z             {
2026-06-21T03:56:28.6713847Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6713926Z               "line": 316
2026-06-21T03:56:28.6714003Z             },
2026-06-21T03:56:28.6714090Z             {
2026-06-21T03:56:28.6714199Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6714275Z               "line": 332
2026-06-21T03:56:28.6714362Z             }
2026-06-21T03:56:28.6714447Z           ]
2026-06-21T03:56:28.6714523Z         }
2026-06-21T03:56:28.6714595Z       }
2026-06-21T03:56:28.6714681Z     },
2026-06-21T03:56:28.6714762Z     {
2026-06-21T03:56:28.6714842Z       "id": "REQ-UPD-4",
2026-06-21T03:56:28.6715015Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T03:56:28.6715223Z       "requiredStages": [
2026-06-21T03:56:28.6715304Z         "impl",
2026-06-21T03:56:28.6715478Z         "unit"
2026-06-21T03:56:28.6715563Z       ],
2026-06-21T03:56:28.6715640Z       "stages": {
2026-06-21T03:56:28.6715722Z         "doc": {
2026-06-21T03:56:28.6715812Z           "complete": false,
2026-06-21T03:56:28.6715892Z           "evidence": []
2026-06-21T03:56:28.6715965Z         },
2026-06-21T03:56:28.6716055Z         "impl": {
2026-06-21T03:56:28.6716145Z           "complete": true,
2026-06-21T03:56:28.6716231Z           "evidence": [
2026-06-21T03:56:28.6716318Z             {
2026-06-21T03:56:28.6716432Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6716522Z               "line": 41
2026-06-21T03:56:28.6716599Z             },
2026-06-21T03:56:28.6716684Z             {
2026-06-21T03:56:28.6716798Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6716885Z               "line": 88
2026-06-21T03:56:28.6716971Z             },
2026-06-21T03:56:28.6717042Z             {
2026-06-21T03:56:28.6717152Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6717243Z               "line": 23
2026-06-21T03:56:28.6717323Z             },
2026-06-21T03:56:28.6717404Z             {
2026-06-21T03:56:28.6717515Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6717601Z               "line": 56
2026-06-21T03:56:28.6717680Z             },
2026-06-21T03:56:28.6717757Z             {
2026-06-21T03:56:28.6717868Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6717958Z               "line": 77
2026-06-21T03:56:28.6718047Z             },
2026-06-21T03:56:28.6718123Z             {
2026-06-21T03:56:28.6718234Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T03:56:28.6718319Z               "line": 236
2026-06-21T03:56:28.6718400Z             },
2026-06-21T03:56:28.6718476Z             {
2026-06-21T03:56:28.6718582Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T03:56:28.6718672Z               "line": 108
2026-06-21T03:56:28.6718757Z             },
2026-06-21T03:56:28.6718845Z             {
2026-06-21T03:56:28.6719034Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6719120Z               "line": 270
2026-06-21T03:56:28.6719197Z             },
2026-06-21T03:56:28.6719292Z             {
2026-06-21T03:56:28.6719392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6719479Z               "line": 2441
2026-06-21T03:56:28.6719559Z             }
2026-06-21T03:56:28.6719635Z           ]
2026-06-21T03:56:28.6719716Z         },
2026-06-21T03:56:28.6719794Z         "int": {
2026-06-21T03:56:28.6719883Z           "complete": false,
2026-06-21T03:56:28.6719968Z           "evidence": []
2026-06-21T03:56:28.6720040Z         },
2026-06-21T03:56:28.6720123Z         "unit": {
2026-06-21T03:56:28.6720208Z           "complete": true,
2026-06-21T03:56:28.6720297Z           "evidence": [
2026-06-21T03:56:28.6720373Z             {
2026-06-21T03:56:28.6720487Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6720571Z               "line": 581
2026-06-21T03:56:28.6720652Z             },
2026-06-21T03:56:28.6720738Z             {
2026-06-21T03:56:28.6720844Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6720934Z               "line": 706
2026-06-21T03:56:28.6721009Z             },
2026-06-21T03:56:28.6721091Z             {
2026-06-21T03:56:28.6721201Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T03:56:28.6721281Z               "line": 384
2026-06-21T03:56:28.6721362Z             },
2026-06-21T03:56:28.6721439Z             {
2026-06-21T03:56:28.6721553Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6721629Z               "line": 102
2026-06-21T03:56:28.6721707Z             },
2026-06-21T03:56:28.6721792Z             {
2026-06-21T03:56:28.6721901Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6722097Z               "line": 123
2026-06-21T03:56:28.6722183Z             },
2026-06-21T03:56:28.6722356Z             {
2026-06-21T03:56:28.6722459Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T03:56:28.6722545Z               "line": 142
2026-06-21T03:56:28.6722631Z             },
2026-06-21T03:56:28.6722703Z             {
2026-06-21T03:56:28.6722817Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T03:56:28.6722893Z               "line": 582
2026-06-21T03:56:28.6722975Z             },
2026-06-21T03:56:28.6723052Z             {
2026-06-21T03:56:28.6723155Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T03:56:28.6723240Z               "line": 566
2026-06-21T03:56:28.6723322Z             },
2026-06-21T03:56:28.6723406Z             {
2026-06-21T03:56:28.6723505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6723590Z               "line": 8256
2026-06-21T03:56:28.6723672Z             }
2026-06-21T03:56:28.6723749Z           ]
2026-06-21T03:56:28.6723829Z         }
2026-06-21T03:56:28.6723910Z       }
2026-06-21T03:56:28.6724002Z     },
2026-06-21T03:56:28.6724073Z     {
2026-06-21T03:56:28.6724162Z       "id": "REQ-UPD-5",
2026-06-21T03:56:28.6724297Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T03:56:28.6724378Z       "requiredStages": [
2026-06-21T03:56:28.6724458Z         "impl",
2026-06-21T03:56:28.6724544Z         "unit"
2026-06-21T03:56:28.6724626Z       ],
2026-06-21T03:56:28.6724706Z       "stages": {
2026-06-21T03:56:28.6724783Z         "doc": {
2026-06-21T03:56:28.6724873Z           "complete": false,
2026-06-21T03:56:28.6724955Z           "evidence": []
2026-06-21T03:56:28.6725026Z         },
2026-06-21T03:56:28.6725107Z         "impl": {
2026-06-21T03:56:28.6725198Z           "complete": true,
2026-06-21T03:56:28.6725284Z           "evidence": [
2026-06-21T03:56:28.6725364Z             {
2026-06-21T03:56:28.6725489Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6725575Z               "line": 27
2026-06-21T03:56:28.6725665Z             },
2026-06-21T03:56:28.6725745Z             {
2026-06-21T03:56:28.6725874Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6725954Z               "line": 87
2026-06-21T03:56:28.6726033Z             },
2026-06-21T03:56:28.6726114Z             {
2026-06-21T03:56:28.6726234Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6726321Z               "line": 145
2026-06-21T03:56:28.6726400Z             },
2026-06-21T03:56:28.6726481Z             {
2026-06-21T03:56:28.6726592Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6726682Z               "line": 492
2026-06-21T03:56:28.6726768Z             },
2026-06-21T03:56:28.6726845Z             {
2026-06-21T03:56:28.6726964Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6727044Z               "line": 546
2026-06-21T03:56:28.6727131Z             }
2026-06-21T03:56:28.6727212Z           ]
2026-06-21T03:56:28.6727292Z         },
2026-06-21T03:56:28.6727373Z         "int": {
2026-06-21T03:56:28.6727455Z           "complete": false,
2026-06-21T03:56:28.6727536Z           "evidence": []
2026-06-21T03:56:28.6727607Z         },
2026-06-21T03:56:28.6727692Z         "unit": {
2026-06-21T03:56:28.6727770Z           "complete": true,
2026-06-21T03:56:28.6727851Z           "evidence": [
2026-06-21T03:56:28.6727930Z             {
2026-06-21T03:56:28.6728046Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6728128Z               "line": 272
2026-06-21T03:56:28.6728208Z             },
2026-06-21T03:56:28.6728289Z             {
2026-06-21T03:56:28.6728395Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6728476Z               "line": 286
2026-06-21T03:56:28.6728556Z             },
2026-06-21T03:56:28.6728631Z             {
2026-06-21T03:56:28.6728837Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6728908Z               "line": 300
2026-06-21T03:56:28.6729156Z             },
2026-06-21T03:56:28.6729236Z             {
2026-06-21T03:56:28.6729375Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6729456Z               "line": 314
2026-06-21T03:56:28.6729533Z             },
2026-06-21T03:56:28.6729613Z             {
2026-06-21T03:56:28.6729729Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6729814Z               "line": 348
2026-06-21T03:56:28.6729899Z             },
2026-06-21T03:56:28.6729975Z             {
2026-06-21T03:56:28.6730096Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6730176Z               "line": 1071
2026-06-21T03:56:28.6730262Z             }
2026-06-21T03:56:28.6730339Z           ]
2026-06-21T03:56:28.6730424Z         }
2026-06-21T03:56:28.6730500Z       }
2026-06-21T03:56:28.6730581Z     },
2026-06-21T03:56:28.6730673Z     {
2026-06-21T03:56:28.6730758Z       "id": "REQ-UPD-6",
2026-06-21T03:56:28.6731559Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T03:56:28.6731646Z       "requiredStages": [
2026-06-21T03:56:28.6731737Z         "doc",
2026-06-21T03:56:28.6731817Z         "impl",
2026-06-21T03:56:28.6731898Z         "unit",
2026-06-21T03:56:28.6731981Z         "int"
2026-06-21T03:56:28.6732052Z       ],
2026-06-21T03:56:28.6732137Z       "stages": {
2026-06-21T03:56:28.6732203Z         "doc": {
2026-06-21T03:56:28.6732300Z           "complete": true,
2026-06-21T03:56:28.6732395Z           "evidence": [
2026-06-21T03:56:28.6732475Z             {
2026-06-21T03:56:28.6732615Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:56:28.6732700Z               "line": 3
2026-06-21T03:56:28.6732776Z             },
2026-06-21T03:56:28.6732857Z             {
2026-06-21T03:56:28.6732958Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T03:56:28.6733057Z               "line": 3
2026-06-21T03:56:28.6733134Z             },
2026-06-21T03:56:28.6733221Z             {
2026-06-21T03:56:28.6733367Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T03:56:28.6733444Z               "line": 3
2026-06-21T03:56:28.6733521Z             }
2026-06-21T03:56:28.6733593Z           ]
2026-06-21T03:56:28.6733677Z         },
2026-06-21T03:56:28.6733757Z         "impl": {
2026-06-21T03:56:28.6733838Z           "complete": true,
2026-06-21T03:56:28.6733924Z           "evidence": [
2026-06-21T03:56:28.6734008Z             {
2026-06-21T03:56:28.6734126Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6734213Z               "line": 76
2026-06-21T03:56:28.6734294Z             },
2026-06-21T03:56:28.6734370Z             {
2026-06-21T03:56:28.6734494Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6734581Z               "line": 212
2026-06-21T03:56:28.6734661Z             },
2026-06-21T03:56:28.6734746Z             {
2026-06-21T03:56:28.6734852Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6734938Z               "line": 69
2026-06-21T03:56:28.6735023Z             },
2026-06-21T03:56:28.6735095Z             {
2026-06-21T03:56:28.6735200Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6735290Z               "line": 133
2026-06-21T03:56:28.6735376Z             },
2026-06-21T03:56:28.6735458Z             {
2026-06-21T03:56:28.6735563Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6735648Z               "line": 243
2026-06-21T03:56:28.6735729Z             },
2026-06-21T03:56:28.6735811Z             {
2026-06-21T03:56:28.6735929Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6736122Z               "line": 406
2026-06-21T03:56:28.6736202Z             },
2026-06-21T03:56:28.6736372Z             {
2026-06-21T03:56:28.6736486Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6736580Z               "line": 534
2026-06-21T03:56:28.6736655Z             },
2026-06-21T03:56:28.6736742Z             {
2026-06-21T03:56:28.6736857Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6736937Z               "line": 548
2026-06-21T03:56:28.6737018Z             },
2026-06-21T03:56:28.6737100Z             {
2026-06-21T03:56:28.6737219Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6737289Z               "line": 603
2026-06-21T03:56:28.6737376Z             },
2026-06-21T03:56:28.6737462Z             {
2026-06-21T03:56:28.6737571Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6737652Z               "line": 634
2026-06-21T03:56:28.6737739Z             },
2026-06-21T03:56:28.6737819Z             {
2026-06-21T03:56:28.6737938Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:56:28.6738030Z               "line": 137
2026-06-21T03:56:28.6738110Z             },
2026-06-21T03:56:28.6738191Z             {
2026-06-21T03:56:28.6738315Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T03:56:28.6738397Z               "line": 184
2026-06-21T03:56:28.6738477Z             },
2026-06-21T03:56:28.6738558Z             {
2026-06-21T03:56:28.6738674Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6738754Z               "line": 78
2026-06-21T03:56:28.6738829Z             },
2026-06-21T03:56:28.6738916Z             {
2026-06-21T03:56:28.6739107Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6739186Z               "line": 114
2026-06-21T03:56:28.6739277Z             },
2026-06-21T03:56:28.6739354Z             {
2026-06-21T03:56:28.6739482Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6739558Z               "line": 185
2026-06-21T03:56:28.6739654Z             },
2026-06-21T03:56:28.6739735Z             {
2026-06-21T03:56:28.6739854Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6739940Z               "line": 260
2026-06-21T03:56:28.6740012Z             },
2026-06-21T03:56:28.6740098Z             {
2026-06-21T03:56:28.6740202Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6740289Z               "line": 292
2026-06-21T03:56:28.6740369Z             },
2026-06-21T03:56:28.6740450Z             {
2026-06-21T03:56:28.6740570Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6740651Z               "line": 323
2026-06-21T03:56:28.6740731Z             },
2026-06-21T03:56:28.6740803Z             {
2026-06-21T03:56:28.6740923Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6741013Z               "line": 346
2026-06-21T03:56:28.6741098Z             },
2026-06-21T03:56:28.6741184Z             {
2026-06-21T03:56:28.6741300Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6741379Z               "line": 388
2026-06-21T03:56:28.6741464Z             },
2026-06-21T03:56:28.6741545Z             {
2026-06-21T03:56:28.6741650Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6741739Z               "line": 398
2026-06-21T03:56:28.6741819Z             },
2026-06-21T03:56:28.6741887Z             {
2026-06-21T03:56:28.6742006Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6742082Z               "line": 410
2026-06-21T03:56:28.6742159Z             },
2026-06-21T03:56:28.6742235Z             {
2026-06-21T03:56:28.6742349Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6742425Z               "line": 420
2026-06-21T03:56:28.6742507Z             },
2026-06-21T03:56:28.6742588Z             {
2026-06-21T03:56:28.6742822Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6742912Z               "line": 439
2026-06-21T03:56:28.6743088Z             },
2026-06-21T03:56:28.6743166Z             {
2026-06-21T03:56:28.6743279Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6743365Z               "line": 449
2026-06-21T03:56:28.6743447Z             },
2026-06-21T03:56:28.6743528Z             {
2026-06-21T03:56:28.6743637Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6743727Z               "line": 94
2026-06-21T03:56:28.6743810Z             },
2026-06-21T03:56:28.6743894Z             {
2026-06-21T03:56:28.6743994Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6744081Z               "line": 120
2026-06-21T03:56:28.6744158Z             },
2026-06-21T03:56:28.6744246Z             {
2026-06-21T03:56:28.6744355Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6744442Z               "line": 135
2026-06-21T03:56:28.6744521Z             },
2026-06-21T03:56:28.6744606Z             {
2026-06-21T03:56:28.6744711Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6744797Z               "line": 162
2026-06-21T03:56:28.6744883Z             },
2026-06-21T03:56:28.6744964Z             {
2026-06-21T03:56:28.6745074Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6745160Z               "line": 174
2026-06-21T03:56:28.6745240Z             },
2026-06-21T03:56:28.6745325Z             {
2026-06-21T03:56:28.6745436Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6745512Z               "line": 185
2026-06-21T03:56:28.6745602Z             },
2026-06-21T03:56:28.6745684Z             {
2026-06-21T03:56:28.6745798Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6745875Z               "line": 451
2026-06-21T03:56:28.6745955Z             },
2026-06-21T03:56:28.6746043Z             {
2026-06-21T03:56:28.6746151Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6746242Z               "line": 573
2026-06-21T03:56:28.6746323Z             },
2026-06-21T03:56:28.6746409Z             {
2026-06-21T03:56:28.6746522Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6746609Z               "line": 171
2026-06-21T03:56:28.6746696Z             },
2026-06-21T03:56:28.6746781Z             {
2026-06-21T03:56:28.6746894Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6746979Z               "line": 65
2026-06-21T03:56:28.6747065Z             },
2026-06-21T03:56:28.6747140Z             {
2026-06-21T03:56:28.6747249Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6747340Z               "line": 71
2026-06-21T03:56:28.6747417Z             },
2026-06-21T03:56:28.6747502Z             {
2026-06-21T03:56:28.6747611Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T03:56:28.6747703Z               "line": 77
2026-06-21T03:56:28.6747784Z             },
2026-06-21T03:56:28.6747863Z             {
2026-06-21T03:56:28.6747979Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6748060Z               "line": 778
2026-06-21T03:56:28.6748136Z             },
2026-06-21T03:56:28.6748217Z             {
2026-06-21T03:56:28.6748323Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6748398Z               "line": 795
2026-06-21T03:56:28.6748474Z             },
2026-06-21T03:56:28.6748560Z             {
2026-06-21T03:56:28.6748647Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6748732Z               "line": 838
2026-06-21T03:56:28.6748808Z             },
2026-06-21T03:56:28.6748895Z             {
2026-06-21T03:56:28.6749051Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6749128Z               "line": 981
2026-06-21T03:56:28.6749205Z             },
2026-06-21T03:56:28.6749286Z             {
2026-06-21T03:56:28.6749496Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6749577Z               "line": 1131
2026-06-21T03:56:28.6749746Z             }
2026-06-21T03:56:28.6749827Z           ]
2026-06-21T03:56:28.6749909Z         },
2026-06-21T03:56:28.6749991Z         "int": {
2026-06-21T03:56:28.6750075Z           "complete": true,
2026-06-21T03:56:28.6750161Z           "evidence": [
2026-06-21T03:56:28.6750239Z             {
2026-06-21T03:56:28.6750362Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.6750452Z               "line": 569
2026-06-21T03:56:28.6750534Z             },
2026-06-21T03:56:28.6750614Z             {
2026-06-21T03:56:28.6750728Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:56:28.6750815Z               "line": 135
2026-06-21T03:56:28.6750896Z             }
2026-06-21T03:56:28.6750972Z           ]
2026-06-21T03:56:28.6751052Z         },
2026-06-21T03:56:28.6751140Z         "unit": {
2026-06-21T03:56:28.6751230Z           "complete": true,
2026-06-21T03:56:28.6751316Z           "evidence": [
2026-06-21T03:56:28.6751401Z             {
2026-06-21T03:56:28.6751526Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6751601Z               "line": 626
2026-06-21T03:56:28.6751673Z             },
2026-06-21T03:56:28.6751759Z             {
2026-06-21T03:56:28.6751879Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6751958Z               "line": 675
2026-06-21T03:56:28.6752039Z             },
2026-06-21T03:56:28.6752120Z             {
2026-06-21T03:56:28.6752233Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T03:56:28.6752318Z               "line": 696
2026-06-21T03:56:28.6752394Z             },
2026-06-21T03:56:28.6752486Z             {
2026-06-21T03:56:28.6752590Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6752680Z               "line": 513
2026-06-21T03:56:28.6752747Z             },
2026-06-21T03:56:28.6752838Z             {
2026-06-21T03:56:28.6752952Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6753043Z               "line": 638
2026-06-21T03:56:28.6753125Z             },
2026-06-21T03:56:28.6753206Z             {
2026-06-21T03:56:28.6753314Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6753397Z               "line": 675
2026-06-21T03:56:28.6753482Z             },
2026-06-21T03:56:28.6753558Z             {
2026-06-21T03:56:28.6753672Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6753764Z               "line": 947
2026-06-21T03:56:28.6753849Z             },
2026-06-21T03:56:28.6753934Z             {
2026-06-21T03:56:28.6754045Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6754135Z               "line": 969
2026-06-21T03:56:28.6754216Z             },
2026-06-21T03:56:28.6754297Z             {
2026-06-21T03:56:28.6754408Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6754492Z               "line": 986
2026-06-21T03:56:28.6754578Z             },
2026-06-21T03:56:28.6754656Z             {
2026-06-21T03:56:28.6754774Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6754868Z               "line": 1001
2026-06-21T03:56:28.6754949Z             },
2026-06-21T03:56:28.6755030Z             {
2026-06-21T03:56:28.6755123Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6755218Z               "line": 1027
2026-06-21T03:56:28.6755295Z             },
2026-06-21T03:56:28.6755381Z             {
2026-06-21T03:56:28.6755495Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T03:56:28.6755576Z               "line": 457
2026-06-21T03:56:28.6755663Z             },
2026-06-21T03:56:28.6755729Z             {
2026-06-21T03:56:28.6755853Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T03:56:28.6755944Z               "line": 338
2026-06-21T03:56:28.6756025Z             },
2026-06-21T03:56:28.6756182Z             {
2026-06-21T03:56:28.6756283Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6756439Z               "line": 10549
2026-06-21T03:56:28.6756511Z             },
2026-06-21T03:56:28.6756588Z             {
2026-06-21T03:56:28.6756692Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6756773Z               "line": 1260
2026-06-21T03:56:28.6756849Z             },
2026-06-21T03:56:28.6756932Z             {
2026-06-21T03:56:28.6757044Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T03:56:28.6757126Z               "line": 130
2026-06-21T03:56:28.6757208Z             }
2026-06-21T03:56:28.6757284Z           ]
2026-06-21T03:56:28.6757369Z         }
2026-06-21T03:56:28.6757444Z       }
2026-06-21T03:56:28.6757516Z     },
2026-06-21T03:56:28.6757592Z     {
2026-06-21T03:56:28.6757672Z       "id": "REQ-UPD-7",
2026-06-21T03:56:28.6759907Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T03:56:28.6760017Z       "requiredStages": [
2026-06-21T03:56:28.6760094Z         "impl",
2026-06-21T03:56:28.6760185Z         "unit"
2026-06-21T03:56:28.6760264Z       ],
2026-06-21T03:56:28.6760344Z       "stages": {
2026-06-21T03:56:28.6760426Z         "doc": {
2026-06-21T03:56:28.6760517Z           "complete": false,
2026-06-21T03:56:28.6760603Z           "evidence": []
2026-06-21T03:56:28.6760683Z         },
2026-06-21T03:56:28.6760774Z         "impl": {
2026-06-21T03:56:28.6760851Z           "complete": true,
2026-06-21T03:56:28.6760941Z           "evidence": [
2026-06-21T03:56:28.6761027Z             {
2026-06-21T03:56:28.6761128Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6761223Z               "line": 2626
2026-06-21T03:56:28.6761303Z             }
2026-06-21T03:56:28.6761390Z           ]
2026-06-21T03:56:28.6761466Z         },
2026-06-21T03:56:28.6761547Z         "int": {
2026-06-21T03:56:28.6761632Z           "complete": false,
2026-06-21T03:56:28.6761719Z           "evidence": []
2026-06-21T03:56:28.6761800Z         },
2026-06-21T03:56:28.6761886Z         "unit": {
2026-06-21T03:56:28.6761976Z           "complete": true,
2026-06-21T03:56:28.6762062Z           "evidence": [
2026-06-21T03:56:28.6762148Z             {
2026-06-21T03:56:28.6762252Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6762334Z               "line": 10525
2026-06-21T03:56:28.6762406Z             }
2026-06-21T03:56:28.6762495Z           ]
2026-06-21T03:56:28.6762580Z         }
2026-06-21T03:56:28.6762661Z       }
2026-06-21T03:56:28.6762752Z     },
2026-06-21T03:56:28.6762835Z     {
2026-06-21T03:56:28.6762921Z       "id": "REQ-UPD-8",
2026-06-21T03:56:28.6765376Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T03:56:28.6765679Z       "requiredStages": [
2026-06-21T03:56:28.6765764Z         "impl",
2026-06-21T03:56:28.6765846Z         "unit"
2026-06-21T03:56:28.6765927Z       ],
2026-06-21T03:56:28.6766008Z       "stages": {
2026-06-21T03:56:28.6766093Z         "doc": {
2026-06-21T03:56:28.6766175Z           "complete": false,
2026-06-21T03:56:28.6766261Z           "evidence": []
2026-06-21T03:56:28.6766332Z         },
2026-06-21T03:56:28.6766422Z         "impl": {
2026-06-21T03:56:28.6766509Z           "complete": true,
2026-06-21T03:56:28.6769047Z           "evidence": [
2026-06-21T03:56:28.6769147Z             {
2026-06-21T03:56:28.6769313Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6769396Z               "line": 77
2026-06-21T03:56:28.6769476Z             },
2026-06-21T03:56:28.6769557Z             {
2026-06-21T03:56:28.6769676Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6769781Z               "line": 49
2026-06-21T03:56:28.6769857Z             },
2026-06-21T03:56:28.6769943Z             {
2026-06-21T03:56:28.6770049Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6770133Z               "line": 152
2026-06-21T03:56:28.6770210Z             },
2026-06-21T03:56:28.6770291Z             {
2026-06-21T03:56:28.6770402Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6770476Z               "line": 215
2026-06-21T03:56:28.6770558Z             },
2026-06-21T03:56:28.6770635Z             {
2026-06-21T03:56:28.6770740Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6770829Z               "line": 230
2026-06-21T03:56:28.6770909Z             },
2026-06-21T03:56:28.6770991Z             {
2026-06-21T03:56:28.6771097Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6771177Z               "line": 247
2026-06-21T03:56:28.6771263Z             },
2026-06-21T03:56:28.6771344Z             {
2026-06-21T03:56:28.6771445Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6771525Z               "line": 269
2026-06-21T03:56:28.6771611Z             },
2026-06-21T03:56:28.6771693Z             {
2026-06-21T03:56:28.6771802Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6771887Z               "line": 66
2026-06-21T03:56:28.6771965Z             },
2026-06-21T03:56:28.6772045Z             {
2026-06-21T03:56:28.6772154Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6772240Z               "line": 154
2026-06-21T03:56:28.6772322Z             },
2026-06-21T03:56:28.6772398Z             {
2026-06-21T03:56:28.6772502Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6772585Z               "line": 2430
2026-06-21T03:56:28.6772660Z             },
2026-06-21T03:56:28.6772740Z             {
2026-06-21T03:56:28.6772836Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6772923Z               "line": 2493
2026-06-21T03:56:28.6773004Z             },
2026-06-21T03:56:28.6773088Z             {
2026-06-21T03:56:28.6773187Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6773269Z               "line": 2503
2026-06-21T03:56:28.6773349Z             },
2026-06-21T03:56:28.6773433Z             {
2026-06-21T03:56:28.6773539Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6773625Z               "line": 2510
2026-06-21T03:56:28.6773706Z             },
2026-06-21T03:56:28.6773781Z             {
2026-06-21T03:56:28.6773882Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6773959Z               "line": 2627
2026-06-21T03:56:28.6774040Z             },
2026-06-21T03:56:28.6774115Z             {
2026-06-21T03:56:28.6774212Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6774301Z               "line": 480
2026-06-21T03:56:28.6774378Z             },
2026-06-21T03:56:28.6774579Z             {
2026-06-21T03:56:28.6774683Z               "path": "crates/xtask/src/main.rs",
2026-06-21T03:56:28.6774769Z               "line": 494
2026-06-21T03:56:28.6774922Z             }
2026-06-21T03:56:28.6774993Z           ]
2026-06-21T03:56:28.6775064Z         },
2026-06-21T03:56:28.6775147Z         "int": {
2026-06-21T03:56:28.6775246Z           "complete": false,
2026-06-21T03:56:28.6775327Z           "evidence": []
2026-06-21T03:56:28.6775403Z         },
2026-06-21T03:56:28.6775490Z         "unit": {
2026-06-21T03:56:28.6775570Z           "complete": true,
2026-06-21T03:56:28.6775656Z           "evidence": [
2026-06-21T03:56:28.6775728Z             {
2026-06-21T03:56:28.6775853Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T03:56:28.6775936Z               "line": 476
2026-06-21T03:56:28.6776017Z             },
2026-06-21T03:56:28.6776103Z             {
2026-06-21T03:56:28.6776221Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T03:56:28.6776305Z               "line": 580
2026-06-21T03:56:28.6776391Z             },
2026-06-21T03:56:28.6776473Z             {
2026-06-21T03:56:28.6776583Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6776668Z               "line": 10527
2026-06-21T03:56:28.6776740Z             },
2026-06-21T03:56:28.6776812Z             {
2026-06-21T03:56:28.6776907Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6776987Z               "line": 10549
2026-06-21T03:56:28.6777069Z             }
2026-06-21T03:56:28.6777141Z           ]
2026-06-21T03:56:28.6777222Z         }
2026-06-21T03:56:28.6777302Z       }
2026-06-21T03:56:28.6777379Z     },
2026-06-21T03:56:28.6777451Z     {
2026-06-21T03:56:28.6777536Z       "id": "REQ-UPD-9",
2026-06-21T03:56:28.6780159Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T03:56:28.6780270Z       "requiredStages": [
2026-06-21T03:56:28.6780350Z         "doc",
2026-06-21T03:56:28.6780432Z         "impl",
2026-06-21T03:56:28.6780508Z         "unit"
2026-06-21T03:56:28.6780575Z       ],
2026-06-21T03:56:28.6780656Z       "stages": {
2026-06-21T03:56:28.6780736Z         "doc": {
2026-06-21T03:56:28.6780823Z           "complete": true,
2026-06-21T03:56:28.6780914Z           "evidence": [
2026-06-21T03:56:28.6780990Z             {
2026-06-21T03:56:28.6781089Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6781176Z               "line": 93
2026-06-21T03:56:28.6781258Z             },
2026-06-21T03:56:28.6781337Z             {
2026-06-21T03:56:28.6781441Z               "path": "docs/MANIFEST.md",
2026-06-21T03:56:28.6781522Z               "line": 285
2026-06-21T03:56:28.6781609Z             }
2026-06-21T03:56:28.6781685Z           ]
2026-06-21T03:56:28.6781756Z         },
2026-06-21T03:56:28.6781837Z         "impl": {
2026-06-21T03:56:28.6781914Z           "complete": true,
2026-06-21T03:56:28.6782005Z           "evidence": [
2026-06-21T03:56:28.6782085Z             {
2026-06-21T03:56:28.6782210Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6782295Z               "line": 128
2026-06-21T03:56:28.6782366Z             },
2026-06-21T03:56:28.6782447Z             {
2026-06-21T03:56:28.6782562Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6782752Z               "line": 533
2026-06-21T03:56:28.6782835Z             },
2026-06-21T03:56:28.6783010Z             {
2026-06-21T03:56:28.6783130Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6783211Z               "line": 459
2026-06-21T03:56:28.6783296Z             },
2026-06-21T03:56:28.6783377Z             {
2026-06-21T03:56:28.6783493Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6783577Z               "line": 505
2026-06-21T03:56:28.6783653Z             },
2026-06-21T03:56:28.6783738Z             {
2026-06-21T03:56:28.6783843Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6783928Z               "line": 928
2026-06-21T03:56:28.6784003Z             },
2026-06-21T03:56:28.6784084Z             {
2026-06-21T03:56:28.6784195Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T03:56:28.6784280Z               "line": 302
2026-06-21T03:56:28.6784365Z             },
2026-06-21T03:56:28.6784447Z             {
2026-06-21T03:56:28.6784542Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6784628Z               "line": 5675
2026-06-21T03:56:28.6784709Z             },
2026-06-21T03:56:28.6784786Z             {
2026-06-21T03:56:28.6784886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6784971Z               "line": 5720
2026-06-21T03:56:28.6785043Z             },
2026-06-21T03:56:28.6785129Z             {
2026-06-21T03:56:28.6785229Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6785319Z               "line": 5857
2026-06-21T03:56:28.6785406Z             },
2026-06-21T03:56:28.6785486Z             {
2026-06-21T03:56:28.6785587Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6785668Z               "line": 5878
2026-06-21T03:56:28.6785749Z             },
2026-06-21T03:56:28.6785830Z             {
2026-06-21T03:56:28.6785920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6786012Z               "line": 5901
2026-06-21T03:56:28.6786088Z             },
2026-06-21T03:56:28.6786177Z             {
2026-06-21T03:56:28.6786268Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6786360Z               "line": 5928
2026-06-21T03:56:28.6786441Z             }
2026-06-21T03:56:28.6786525Z           ]
2026-06-21T03:56:28.6786606Z         },
2026-06-21T03:56:28.6786687Z         "int": {
2026-06-21T03:56:28.6786776Z           "complete": false,
2026-06-21T03:56:28.6786861Z           "evidence": []
2026-06-21T03:56:28.6786932Z         },
2026-06-21T03:56:28.6787013Z         "unit": {
2026-06-21T03:56:28.6787100Z           "complete": true,
2026-06-21T03:56:28.6787185Z           "evidence": [
2026-06-21T03:56:28.6787261Z             {
2026-06-21T03:56:28.6787391Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T03:56:28.6787476Z               "line": 259
2026-06-21T03:56:28.6787561Z             },
2026-06-21T03:56:28.6787644Z             {
2026-06-21T03:56:28.6787763Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T03:56:28.6787852Z               "line": 657
2026-06-21T03:56:28.6787929Z             },
2026-06-21T03:56:28.6788011Z             {
2026-06-21T03:56:28.6788130Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T03:56:28.6788211Z               "line": 1107
2026-06-21T03:56:28.6788292Z             },
2026-06-21T03:56:28.6788368Z             {
2026-06-21T03:56:28.6788468Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6788549Z               "line": 7565
2026-06-21T03:56:28.6788626Z             }
2026-06-21T03:56:28.6788706Z           ]
2026-06-21T03:56:28.6788778Z         }
2026-06-21T03:56:28.6788854Z       }
2026-06-21T03:56:28.6788936Z     },
2026-06-21T03:56:28.6789077Z     {
2026-06-21T03:56:28.6789162Z       "id": "REQ-WHOAMI-1",
2026-06-21T03:56:28.6790801Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T03:56:28.6791111Z       "requiredStages": [
2026-06-21T03:56:28.6791193Z         "doc",
2026-06-21T03:56:28.6791273Z         "impl",
2026-06-21T03:56:28.6791349Z         "unit"
2026-06-21T03:56:28.6791431Z       ],
2026-06-21T03:56:28.6791513Z       "stages": {
2026-06-21T03:56:28.6791592Z         "doc": {
2026-06-21T03:56:28.6791673Z           "complete": true,
2026-06-21T03:56:28.6791751Z           "evidence": [
2026-06-21T03:56:28.6791832Z             {
2026-06-21T03:56:28.6791921Z               "path": "CONTEXT.md",
2026-06-21T03:56:28.6792011Z               "line": 707
2026-06-21T03:56:28.6792097Z             }
2026-06-21T03:56:28.6792174Z           ]
2026-06-21T03:56:28.6792254Z         },
2026-06-21T03:56:28.6792335Z         "impl": {
2026-06-21T03:56:28.6792421Z           "complete": true,
2026-06-21T03:56:28.6792503Z           "evidence": [
2026-06-21T03:56:28.6792583Z             {
2026-06-21T03:56:28.6792678Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6792761Z               "line": 3190
2026-06-21T03:56:28.6792841Z             },
2026-06-21T03:56:28.6792917Z             {
2026-06-21T03:56:28.6793017Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6793099Z               "line": 3218
2026-06-21T03:56:28.6793175Z             }
2026-06-21T03:56:28.6793255Z           ]
2026-06-21T03:56:28.6793336Z         },
2026-06-21T03:56:28.6793414Z         "int": {
2026-06-21T03:56:28.6793494Z           "complete": false,
2026-06-21T03:56:28.6793584Z           "evidence": []
2026-06-21T03:56:28.6793661Z         },
2026-06-21T03:56:28.6793743Z         "unit": {
2026-06-21T03:56:28.6793832Z           "complete": true,
2026-06-21T03:56:28.6793918Z           "evidence": [
2026-06-21T03:56:28.6794005Z             {
2026-06-21T03:56:28.6794100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6794185Z               "line": 7847
2026-06-21T03:56:28.6794265Z             },
2026-06-21T03:56:28.6794346Z             {
2026-06-21T03:56:28.6794441Z               "path": "crates/spt/src/cli.rs",
2026-06-21T03:56:28.6794521Z               "line": 7900
2026-06-21T03:56:28.6794596Z             }
2026-06-21T03:56:28.6794673Z           ]
2026-06-21T03:56:28.6794755Z         }
2026-06-21T03:56:28.6794835Z       }
2026-06-21T03:56:28.6794916Z     }
2026-06-21T03:56:28.6794983Z   ],
2026-06-21T03:56:28.6795065Z   "findings": []
2026-06-21T03:56:28.6795150Z }
